Как скрыть вывод приложения оболочки в Linux?

Как скрыть вывод приложения оболочки в Linux?

Как скрыть вывод на экран (printf) приложения оболочки в Linux?

решение1

Вы можете перенаправить вывод любой программы так, чтобы его не было видно.

$ program > /dev/null

Это перенаправит стандартный вывод — вы все равно увидите любые ошибки.

$ program &> /dev/null

Это перенаправит весь вывод, включая ошибки.

решение2

В командной строке доступны три устройства ввода-вывода.

 standard input  - 0
 standard output - 1
 standard error  - 2

Чтобы перенаправить стандартный вывод (вывод по умолчанию) в файл (и перезаписать файл), используйте

 command > file.log

Чтобы добавить в файл file.log, используйте две >s

 command >> file.log

Чтобы перенаправить стандартную ошибку в файл .log, используйте

 command 2> file.log

И добавить

 command 2>> file.log

Объединить выходные данные в один поток и отправить их все в одно место

 command > file.log 2>&1

Это отправляет 2 (стандартная ошибка) в 1 (стандартный вывод) и отправляет стандартный вывод в file.log

Обратите внимание, что стандартный ввод также можно перенаправить в команду, которая ожидает стандартный ввод.

 command << file.txt


Для получения более подробной информации посетитеРасширенное руководство по написанию сценариев Bash.

решение3

Скрыть стандартный вывод:

./command >/dev/null

Скрыть стандартный вывод и вывод ошибок:

./command >/dev/null 2>&1

Скройте стандартный вывод и вывод ошибок и освободите терминал (выполните команду в фоновом режиме):

./command >/dev/null 2>&1 &

решение4

ДляMac OS X версии 10.6(Снежный барс):

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

stty flusho; command ;stty -flusho

или, кстати, если вы просто хотите скрыть ввод с терминала:

stty  -echo; command ;stty  echo

Более подробную информацию смотрите на странице руководства stty(1).

Для Linux я знаю только, чтоУбунту 10.04(Lucid Lynx) и некоторые Debian/Arch Linux (прокомментированные ниже - спасибо, Хендри) не имеют этой flushoнастройки (и я не вижу ничего другого подходящего в man-странице). Эта echoнастройка в любом случае работает в Ubuntu.

Связанный контент