
Как скрыть вывод на экран (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.