it-swarm-ru.tech

Как я могу скрыть вывод приложения Shell в Linux?

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

47
Jader Dias

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

$ program > /dev/null

Это перенаправит стандартный вывод - вы все равно увидите ошибки

$ program &> /dev/null

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

72
theotherreceive

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

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

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

 command > file.log

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

 command >> file.log

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

 command 2> file.log

И добавить

 command 2>> file.log

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

 command > file.log 2>&1

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

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

 command << file.txt


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

30
Matt Simmons

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

./command >/dev/null

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

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

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

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

Если вы просто хотите скрыть вывод (а не сохранить его в файл), вы можете использовать:

Отредактировано:

$ command &>/dev/null

3
Lucho

Для Mac OS X v10.6 (Snow Leopard):

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

stty flusho; command ;stty -flusho

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

stty  -echo; command ;stty  echo

Смотрите stty (1) справочную страницу для получения дополнительной информации.

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

2
vike