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

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

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

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

63
задан 6 June 2014 в 00:30

3 ответа

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

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

0
ответ дан 6 June 2014 в 00:30

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

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

Вы могли записать функцию как это:

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

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

Объяснение:

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

    • перенаправления stdout и stderr к /dev/null (подавляет вывод к терминалу),
    • использование & выполнять команду в фоновом режиме (таким образом, Ваша оболочка не заблокирована),
    • использование disown удалить фоновое задание из оболочки (таким образом, это не появится в списке активных заданий),
    • использование nohup отсоединять процесс от терминала (таким образом, можно закончить сессию оболочки или закрыть терминал, не уничтожая процесс),
12
ответ дан 6 June 2014 в 00:30

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

$ eclipse >/dev/null

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

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

$ eclipse >/dev/null 2>&1

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

$ eclipse &>/dev/null

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

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

0
ответ дан 6 June 2014 в 00:30

Другие вопросы по тегам:

Похожие вопросы: