С 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