Как скрыть вывод терминала при выполнении команды?

47

Когда я запускаю определенные программы из командной строки, такие как eclipse и средство просмотра документов в 11.10, он выводит на экран информацию, которая кажется несущественной.

Также, когда они запускаются в фоновом режиме, они иногда продолжают выдавать вывод на терминал, над которым я сейчас работаю, что раздражает.

Я бы хотел, чтобы они просто запускали и сохраняли фоновый материал в фоновом режиме. Мое рассуждение состоит в том, что если вы запускаете эти программы через графический интерфейс (например, двойным щелчком по значку), эти сообщения мне никогда не показываются, поэтому я не нуждаюсь в них в командной строке.

    
задан Anake 25.01.2012 в 12:20
источник

3 ответа

64

Если вы можете не писать записи в консоли, это зависит от того, как создается выход из программы. Если он передается на стандартный вывод, то этого достаточно сделать

$ eclipse >/dev/null

, и вывод не должен производиться.

Для подавления сообщений об ошибках:

$ eclipse >/dev/null 2>&1

Или в bash, просто:

$ eclipse &>/dev/null

Но если они сделают это как-то иначе, может возникнуть проблема, чтобы остановить его от записи в консоли.

, если возможно, используйте решение, указанное MuffinStateWide

    
ответ дан Misery 25.01.2012 в 13:03
источник
7

Вы можете создать функцию bash, которая будет псевдонимом имени команды и добавить дополнительные функции для достижения того, о чем вы просите.

Например: предположим, вы хотите запустить gvim (текстовый редактор gui) из командной строки.

вы можете написать такую ​​функцию:

function gvim () {
    nohup gvim "[email protected]" > /dev/null 2>&1 & disown
}

(добавьте эту функцию в файл .bashrc или .bash_aliases , чтобы он всегда загружался)

Пояснение:

  • это будет означать команду gvim с функцией bash, также называемой gvim (поэтому, когда вы введете gvim в приглашении bash, она вызовет вашу функцию gvim , а не выполнит реальный gvim Затем ваша функция вызывает действительную команду gvim (и принимает ее обычные аргументы), с некоторыми дополнительными функциями:

    • перенаправляет stdout и stderr на /dev/null (подавляет вывод на терминал)
    • использует & для запуска команды в фоновом режиме (так что ваша оболочка не заблокирована).
    • использует disown для удаления фонового задания из оболочки (поэтому он не будет отображаться в списке активных заданий)
    • использует nohup для отсоединения процесса от терминала (чтобы завершить сеанс оболочки или закрыть терминал, не убивая процесс)
ответ дан Corey Goldberg 16.02.2016 в 17:20
5

попробуйте добавить -help в качестве командного переключателя и искать «тихий», это должно подавлять вывод или просто запускаться из графического интерфейса. и запустить с помощью коммутатора или найти способ подавить его через скрипт

лично я запускаю из cli, чтобы получить этот вывод, поэтому я не уверен, что это возможно для всех графических приложений.

    
ответ дан MuffinStateWide 25.01.2012 в 13:06