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

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

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

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

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

$ eclipse >/dev/null

и никакого вывода не должно быть сделано.

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

$ eclipse >/dev/null 2>&1

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

$ eclipse &>/dev/null

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

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

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

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

вы могли бы написать такую функцию, как эта:

function gvim () {    nohup gvim "$@" > /dev/null 2>&1 & disown}

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

Объяснение:

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

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

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

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

По теме: Как чисто запустить приложение с графическим интерфейсом через терминал?