2. stdin (Стандартный ввод)

В предыдущем уроке мы узнали о перенаправлении потока стандартного вывода (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

Вот разбивка того, что происходит:

  1. Часть < peanuts.txt указывает оболочке перенаправить stdin для команды cat, заставляя ее считывать данные из peanuts.txt вместо клавиатуры.
  2. Команда cat обрабатывает свой ввод. В данном случае использование cat stdin означает, что она считывает содержимое peanuts.txt.
  3. Часть > banana.txt перенаправляет стандартный вывод cat в новый файл с именем banana.txt.

В конечном счете, содержимое peanuts.txt копируется в banana.txt. Этот пример эффективно демонстрирует, как управлять как stdin, так и stdout в одной эффективной команде.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Чтобы закрепить понимание, попробуйте выполнить эти практические упражнения, посвященные перенаправлению ввода и вывода в Linux:

  1. Перенаправление ввода и вывода в Linux - Практикуйтесь в управлении потоком данных из команд, манипулируя стандартным выводом (stdout), стандартной ошибкой (stderr) и стандартным вводом (stdin) с помощью таких операторов, как >, >>, 2> и команды tee.
  2. Перенаправление потоков данных - Изучите искусство перенаправления потоков в Linux. Манипулируйте потоками стандартного ввода, вывода и ошибок, объединяйте выводы и используйте /dev/null для расширенных файловых операций.
  3. Управление последовательностью и конвейер - Научитесь управлять последовательностями выполнения команд и использовать конвейеры (pipelines), которые являются основой для направления вывода одной команды в качестве ввода для другой.

Эти лабораторные работы помогут вам применить концепции перенаправления ввода и вывода в реальных сценариях и повысить уверенность в работе со скриптами оболочки и манипулированием данными.

Тест

Какой оператор используется для перенаправления stdin? Пожалуйста, ответьте только требуемым символом.