С Bash Scripting, как я могу подавить весь вывод из команды?
У меня есть bash script, который запускает программу с параметрами. Эта программа выводит определенный статус (делая это, делая это...). Для этой программы нет возможности быть спокойным. Как я могу предотвратить отображение script чего-либо?
Я ищу что-то вроде windows echo off.
Ответы
Ответ 1
Следующее отправляет стандартный вывод на нулевое устройство (бит-ведро).
scriptname >/dev/null
и если вы также хотите, чтобы там были отправлены сообщения об ошибках, используйте один из них (первый может не работать во всех оболочках):
scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null
и если вы хотите записать сообщения, но не видите их, замените /dev/null
на фактический файл, например:
scriptname &>scriptname.out
Для полноты, под Windows cmd.exe(где "nul" является эквивалентом "/dev/null" ), это:
scriptname >nul 2>nul
Ответ 2
Что-то вроде
script > /dev/null 2>&1
Это предотвратит вывод стандартных выходных и ошибок, перенаправляя их как на /dev/null
.
Ответ 3
Try
: $(yourcommand)
:
не подходит для "ничего не делать".
$()
- это ваша команда.
Ответ 4
Как и пост andynormancx, используйте это: (если вы работаете в среде Unix)
scriptname > /dev/null
или вы можете использовать это: (если вы работаете в среде Windows)
scriptname > nul
Ответ 5
Альтернативой, которая может поместиться в некоторых ситуациях, является назначение результата команды переменной:
$ DUMMY=`grep root /etc/passwd`
$ echo $?
0
$ DUMMY=`grep r00t /etc/passwd`
$ echo $?
1
Поскольку Bash и другие интерпретаторы командной строки POSIX не рассматривают назначения переменных как команду, соблюдается код возврата текущей команды.
Ответ 6
С Bash Scripting, как я могу подавить весь вывод из команды?
IMHO, я считаю, что вы можете достичь простого использования этого перенаправления, как это было в первом ответе, и ничего больше:
/path/to/command &>/dev/null
Этот пример из Проект документации Linux стоит упомянуть также:
3.6 Образец: файл stderr и stdout 2
Это поместит каждый вывод программы в файл. Это подходит иногда для записей cron, если вы хотите, чтобы команда проходила абсолютную тишину.
rm -f $(find / -name core) &> /dev/null
Ответ 7
В script вы можете добавить следующее к строкам, которые, как вы знаете, будут давать результат:
some_code 2>>/dev/null
Или вы также можете попробовать
some_code >>/dev/null