📜 Bash – как перенаправить стандартный вывод (stdout) и стандартную ошибку (stderr ) в один и тот же файл

by itisgood

Оболочка Bash – самая популярная оболочка в системах Linux, и для эффективного использования этого шелла вам нужно немного знать о перенаправлениях оболочки Bash.

♾️ Что такое /dev/null в Linux?

Это также важный шаг в изучении скриптов Bash.

В этом руководстве мы покажем, как перенаправить stdout и stderr в один и тот же файл в командной строке оболочки Bash.

Статья будет включать несколько примеров, чтобы вы могли выбрать правильный метод!

🐧 Что такое коды выхода Bash в Linux

В этом руководстве вы узнаете:

  • Как перенаправить stdout и stderr в тот же файл
  • Как перенаправить stdout и stderr в файл и на терминал
  • Как перенаправить stdout и stderr в /dev/null

Перенаправление stdout и stderr

Давайте сначала рассмотрим, как перенаправить stdout в файл.
Если у вас уже есть эти основы Bash, не стесняйтесь переходить к примерам команд.
Обычно вы используете > для перенаправления, а для добавления в существующий файл вы должны использовать >>.
$ echo "itisgood.ru" > new-file.txt
AND
$ echo "itisgood.ru" >> existing-file.txt

С помощью этих команд stdout  будет перенаправлен в файл, и на вашем экране будет отображаться stderr.

Если вы новичок в Linux, «стандартный вывод (stdout)» – это обычный ожидаемый результат выполнения команды или скрипта, а «стандартная ошибка ( stderr)» – это любые возникающие сообщения об ошибках.

Вместо этого, чтобы перенаправить стандартную ошибку, мы можем использовать 2>.

Это приведет к появлению стандартного вывода на нашем экране и отправке всех сообщений об ошибках в файл.

$ echo "itisgood.ru" 2> new-file.txt

Изложив основы, далее мы рассмотрим различные примеры команд для перенаправления стандартного вывода и стандартной ошибки в один и тот же файл.

Пример 1:

Чтобы перенаправить стандартный вывод и стандартную ошибку в один и тот же файл, используйте следующий синтаксис.
В частности, добавьте 2> & 1 в конец вашей обычной команды.
$ echo "itisgood.ru" > new-file.txt 2>&1

Пример 2:

Чуть более простой способ реализовать эту функциональность – использовать оператор &>.
Обратите внимание, что это отлично работает в Bash и zsh, но не в других оболочках, поэтому используйте предыдущий пример для максимальной совместимости с другими системами.
$ echo "itisgood.ru" &> new-file.txt

 Пример 3:

Чтобы добавить стандартный вывод и стандартную ошибку в уже существующий файл, используйте тот же синтаксис, что и выше, но с оператором перенаправления >>.

Пример 4:

Чтобы убрать стандартный вывод и стандартную ошибку из вашего терминала, а также избежать создания файла, вы можете перенаправить их  в /dev/null.

You may also like

Leave a Comment