Перенаправление ввода-вывода в примерах Linux/Unix

Что такое перенаправление?

Перенаправление — это функция Linux, позволяющая при выполнении команды менять стандартные устройства ввода/вывода. Основной рабочий процесс любого Команда Linux заключается в том, что он принимает входные данные и выдает выходные данные.

  • Устройство стандартного ввода (stdin) — это клавиатура.
  • Устройство стандартного вывода (stdout) — это экран.

С помощью перенаправления можно изменить вышеуказанный стандартный ввод/вывод.

Нажмите здесь если видео недоступно

Перенаправление вывода

Команда '>' используется для перенаправления вывода (STDOUT).

Перенаправление вывода

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

ls -al > listings

Здесь вывод команды ls -al перенаправляется в файл «listings», а не на ваш экран.

Перенаправление вывода

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

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

Перенаправление вывода

Вы можете перенаправить стандартный вывод не только на файлы, но и на устройства!

$ cat music.mp3 > /dev/audio

Команда cat читает файл music.mp3 и отправляет вывод в /dev/audio, которое является аудиоустройством. Если настройки звука на вашем ПК верны, эта команда воспроизведет файл music.mp3.

Перенаправление ввода

Команда 'Символ ' используется для перенаправления ввода (STDIN)

Перенаправление ввода

Пример: Почтовая программа в Linux может помочь вам отправлять электронные письма из терминала.

Содержимое электронного письма можно ввести с помощью стандартной клавиатуры устройства. Но если вы хотите прикрепить файл к электронному письму, вы можете использовать оператор перенаправления ввода в следующем формате.

Mail -s "Subject" to-address < Filename

Перенаправление ввода

Это позволит прикрепить файл к электронному письму и отправить его получателю.

Приведенные выше примеры были простыми. Давайте рассмотрим некоторые продвинутые методы перенаправления, использующие File DescriptПРС.

Файл Descriptорс (FD)

В Linux/Unix все представляет собой файл. Обычный файл, каталоги и даже устройства — это файлы. Каждый файл имеет связанный номер, называемый файлом. Descriptили (ФД).

На вашем экране также есть файл Descriptили. Когда программа выполняется, выходные данные отправляются в файл. Descriptили экрана, и вы увидите вывод программы на своем мониторе. Если вывод отправляется в файл Descriptили принтера, выходные данные программы были бы распечатаны.

Ошибка перенаправления

Всякий раз, когда вы выполняете программу/команду на терминале, всегда открыты 3 файла, а именно: стандартный ввод, стандартный вывод, стандартная ошибка..

Ошибка перенаправления

Эти файлы всегда присутствуют при каждом запуске программы. Как объяснялось ранее, дескриптор файла связан с каждым из этих файлов.

Файл Файл Descriptor
Стандартный ввод STDIN 0
Стандартный вывод STDOUT 1
Стандартная ошибка STDERR 2

По умолчанию поток ошибок отображается на экране. Перенаправление ошибок — это перенаправление ошибок в файл, отличный от экрана.

Почему перенаправление ошибок?

Перенаправление ошибок — одна из очень популярных функций Unix / Linux.

Постоянные пользователи UNIX сочтут, что многие команды вызывают огромное количество ошибок.

  • Например, при поиске файлов обычно возникают ошибки отказа в доступе. Эти ошибки обычно не помогают человеку, ищущему конкретный файл.
  • При выполнении сценариев оболочки вы часто НЕ хотите, чтобы сообщения об ошибках загромождали нормальный вывод программы.

Решение состоит в том, чтобы перенаправить сообщения об ошибках в файл.

Пример 1

$ myprogram 2>errorsfile

Почему ошибка перенаправления

Выше мы выполняем программу с именем myprogram.

Дескриптор файла для стандартной ошибки - 2.

Используя «2>», мы перенаправляем вывод ошибки в файл с именем «errorfile».

Таким образом, вывод программы не загроможден ошибками.

Пример 2

Вот еще один пример, в котором используется оператор find –

find . -name 'my*' 2>error.log

Используя команду «найти», мы ищем «.» текущий каталог для файла, имя которого начинается с «мой»

Почему ошибка перенаправления

Пример 3: Давайте рассмотрим более сложный пример.

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

ls Documents ABC> dirlist 2>&1

Здесь,

  • который записывает вывод из одного файла во вход другого файла. 2>&1 означает, что STDERR перенаправляет на цель STDOUT (которая является списком каталогов файлов)
  • Мы перенаправляем вывод ошибок на стандартный вывод, который, в свою очередь, перенаправляется в список каталогов файлов. Следовательно, оба вывода записываются в файл dirlist

Почему ошибка перенаправления

Резюме

  • Каждому файлу в Linux соответствует соответствующий файл. Descriptили связанный с ним
  • Клавиатура является стандартным устройством ввода, а экран — стандартным устройством вывода.
  • «>» — оператор перенаправления вывода. «>>» добавляет вывод в существующий файл.
  • «<» — оператор перенаправления ввода
  • «> &» Перенаправляет вывод одного файла в другой.
  • Вы можете перенаправить ошибку, используя соответствующий файл. Descriptили 2.