Перенаправление stdout и stderr в Linux: полное руководство

Каждый процесс имеет три потока данных: stdin, stdout и stderr. Рассмотрим, как различить вывод потоков stdout и stderr, и как перенаправить их в файл.

Перенаправление STDOUT

Для демонстрации используем команды ls и mkdir. Сначала перенаправим вывод потока stdout команды ls в файл.

  1. Выполним команду ls > stdout.txt. Символ > означает перенаправление stdout в указанный файл.
  2. Вывод на терминале отсутствует, так как он перенаправлен в файл stdout.txt.
  3. Проверим содержимое файла командой cat stdout.txt. В файле содержится список файлов и папок – тот же вывод, что и при выполнении ls в терминале, но без цветового оформления.
  4. Для удаления файла stdout.txt используем команду rm stdout.txt.

Перенаправление STDERR

Рассмотрим команду mkdir без аргументов, которая генерирует сообщение об ошибке.

  1. Выполним команду mkdir без аргументов. На терминале отобразится сообщение об ошибке.
  2. Попробуем перенаправить вывод с помощью той же команды, что и для ls: mkdir > stdout.txt.
  3. Проверим содержимое stdout.txt. Файл пуст. Ошибка не перенаправлена в stdout.txt.
  4. Для перенаправления stderr используем команду mkdir 2> stderr.txt. 2> перенаправляет stderr в файл stderr.txt.
  5. Проверим содержимое папки. Появился файл stderr.txt.
  6. Прочитаем содержимое файла stderr.txt командой cat stderr.txt. В файле содержится сообщение об ошибке, которое ранее отображалось на терминале.

Мы рассмотрели перенаправление потоков stdout и stderr в файлы с помощью операторов > (перенаправление stdout) и 2> (перенаправление stderr). Это позволяет управлять выводом программ и сохранять его для дальнейшего анализа.

Что будем искать? Например,программа