Как использовать перенаправление ввода / вывода в Linux

Как использовать перенаправление ввода / вывода в Linux

Рубрики:

Linux, Терминал Linux

Метки:

, , , ,

Перенаправление потока ввода / вывода в Linux — это мощная функция командной строки, которая позволяет перенаправлять ввод или вывод команд, а также объединять несколько команд. Эта функция важна потому, что любая утилита Linux принимает входные данные и выдает выходные данные. Первые поступают через стандартный ввод, а вторые выдаются через стандартный вывод. Если что-то идет не так, то ошибки выводятся через stderr (стандартный вывод ошибок). Работа с функцией перенаправления ввода / вывода — одно из ключевых элементов в системном администрировании Linux.

В этой статье мы расскажем, как использовать перенаправление при работе с файлами в Linux, а также покажем несколько полезных примеров.

Содержание:

  1. Что такое перенаправление ввода / вывод
  2. Как использовать перенаправления в Linux
    1. Перенаправьте стандартный вывод в файл
    2. Перенаправьте стандартный вывод ошибок (stderr) в файл
    3. Перенаправьте стандартный вывод и ошибки в один файл
    4. Перенаправьте стандартный ввод из файла
    5. Перенаправляйте одновременно стандартный ввод и вывод в файл
  3. Как использовать перенаправление с помощью «труб»
    1. Используйте команду xargs
    2. Используйте команду tee
  4. Выводы

Что такое перенаправление ввода / вывода

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

  • stdin, дескриптор 0 — стандартный ввод (клавиатура);
  • stdout, дескриптор 1 — стандартный вывод (вывод на экран);
  • stderr, дескриптор 2 — стандартная ошибка (вывод ошибок на экран).

Перенаправление позволяет Вам указать место, куда отправляются входные и выходные данные утилиты и сообщения об ошибках. Для этого Вы должны использовать специальные операторы перенаправления< и >.

У Вас также есть возможность объединять несколько команд с помощью «труб» — разделить их вертикальной чертой | , чтобы сформировать так называемый конвейер.

Как использовать перенаправления в Linux

Очевидно, что одной теории слишком мало, чтобы разобраться в этой теме. Мы предлагаем рассмотреть несколько примеров, которые будут полезными в работе.

Перенаправьте стандартный вывод в файл

Самый простой пример, который можно выполнить с помощью перенаправления — это записать стандартный вывод команды в файл. В качестве примера, запишем результат работы команды ls -l в файл 123.txt и выведем его на экран:

 

перенаправление вывода в файл

Вы могли заметить, что для записи вывода в файл мы использовали символ >.

Если мы снова перенаправим вывод команды в этот файл, он перезапишется новыми данными, а старые пропадут. Если Вам нужно сохранить старые данные и добавить к ним новые — используйте двойной оператор перенаправления >>.

Например, чтобы добавить вывод команды ls -la в файл, введите в терминале следующую комбинацию команд:

 

добавить в конец файла с перенаправлением

На скриншоте показано, что содержимое файла начинается с вывода команды ls -l, а заканчивается выводом команды ls -la.

Перенаправьте стандартный вывод ошибок (stderr) в файл

Вы также можете перенаправить в файл сообщения об ошибках. Для этого Вам нужно указать номер дескриптора 2 вместе с символом >. Для примера выполним следующую последовательность действий:

  • введем команду, которая приведет к ошибке при выполнении;
  • запишем данную ошибку в файл;
  • выведем содержимое файла на экран.

Для этого введем в командную строку следующий код:

 

перенаправление ошибки

Читайте также: Курс LFCS — часть 1: обработка текстовых потоков в Linux.

Обратите внимание, что мы использовали номер дескриптора со специальным символом — 2>.

Чтобы добавить новое сообщение об ошибках к уже записанным в файл, введите следующую команду:

Перенаправьте стандартный вывод и ошибки в один файл

Если Вам нужно записать весь вывод команды (он состоит как из стандартного вывода, так и из стандартных ошибок) в один файл — воспользуйтесь следующим способом:

 

перенаправление ошибки в один файл

Обратите внимание, что мы использовали амперсанд с оператором перенаправления вывода — &>. Если Вы хотите добавить новый стандартный вывод и стандартную ошибку одновременно в один файл, используйте следующую команду:

Перенаправьте стандартный ввод из файла

Вы можете также перенаправлять содержимое файла на стандартный ввод, используя оператор <. Например, выведем содержимое файла error.txt на команду cat. В результате команда выведет на экран текст файла:

 

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

Перенаправляйте одновременно стандартный ввод и вывод в файл

Вы можете работать одновременно как и со стандартным вводом, так и со стандартным выводом. Лучше всего продемонстрировать это поможет команда sort:

 

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

Сначала мы направили содержимое файла abc.txt на команду sort(стандартный ввод). Команда отсортировала список из файла и направила отсортированный список в новый файл sorted.txt(стандартный вывод).

Как использовать перенаправление с помощью «труб»

Так называемый конвейер команд задействуется, когда Вам нужно перенаправить вывод одной команды на ввод другой. В основном, он используется во время построения сложных последовательностей команд. Очень часто Вы можете увидеть «трубы» с командой head, которая выводит первые 10 строк файла. Например, приведенная ниже команда покажет список из пяти первых строк файла /etc/passwd:

 

pipeline

Здесь, мы использовали параметр -n, чтобы вывести не первые 10 строк, а 5.

Существуют и другие команды с конвейером.

Используйте команду xargs

Утилита xargs — отличный инструмент, который считывает потоки данных из стандартного ввода, затем генерирует и выполняет командные строки. Ниже Вы можете видеть пример конвейера с использованием xargs. В этом случае мы используем команду cp -v для копирования содержимого из файла 123.txt в файл sorted.txt:

 

xargs
Читайте также: 12 практических примеров команды xargs для начинающих в Linux, xargs примеры.

Используйте команду tee

Команда tee считывает стандартный ввод и записывает его в один или несколько выбранных файлов. Например, запишем ввод It is Sedicomm в файл 123.txt:

 

tee

Выводы

Мы выяснили для чего и как используется перенаправление ввода / вывода в Linux. А также — разобрали несколько примеров его использования для работы с файлами и их содержимым.

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

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасностиполный курс по кибербезопасностикурсы DevNet / DevOps (программируемые системы) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Linux, Терминал Linux

Метки:

, , , ,

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню