В предыдущем уроке мы узнали о перенаправлении потока стандартного вывода (stdout). Аналогично, мы также можем управлять потоком стандартного ввода (stdin). По умолчанию программа получает свой stdin с клавиатуры, но мы также можем использовать файлы или вывод других процессов в качестве источника ввода.
Понимание stdin и stdout
Каждая команда в командной строке Linux работает как минимум с двумя фундаментальными потоками данных: стандартным вводом (stdin) и стандартным выводом (stdout). Программа считывает данные из stdin и записывает свои результаты в stdout. Понимание того, как управлять как stdin, так и stdout, имеет решающее значение для эффективной работы в командной строке.
Как перенаправить stdin
Точно так же, как мы используем > для перенаправления stdout, мы используем оператор < для перенаправления stdin. Эта мощная функция позволяет указать команде считывать свой ввод из файла вместо того, чтобы ждать, пока вы введете его с клавиатуры. Это основная концепция перенаправления ввода.
Практический пример с cat stdin
Давайте вернемся к файлу peanuts.txt из предыдущего урока, который содержит текст "Hello World". Рассмотрим следующую команду:
cat < peanuts.txt > banana.txt
Вот разбивка того, что происходит:
- Часть
< peanuts.txtуказывает оболочкеперенаправить stdinдля командыcat, заставляя ее считывать данные изpeanuts.txtвместо клавиатуры. - Команда
catобрабатывает свой ввод. В данном случае использованиеcat stdinозначает, что она считывает содержимоеpeanuts.txt. - Часть
> banana.txtперенаправляет стандартный выводcatв новый файл с именемbanana.txt.
В конечном счете, содержимое peanuts.txt копируется в banana.txt. Этот пример эффективно демонстрирует, как управлять как stdin, так и stdout в одной эффективной команде.