Перенаправление ввода и вывода (>, >>, <)
Освойте перенаправление вывода команд в файлы и использование файлов в качестве входных данных для команд, повышая гибкость скриптов.
«Перенаправление ввода и вывода (>, >>, <)» — бесплатный урок Linux Command Line & Bash Scripting Mastery на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Command Line & Bash Scripting Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.
Что такое перенаправление ввода-вывода?
В Linux команды часто формируют вывод или требуют ввод. Перенаправление ввода-вывода (I/O) позволяет изменить источник ввода команды или место, куда она отправляет вывод.
Вместо того чтобы просто видеть вывод на экране (в терминале), его можно сохранить в файл или даже передать содержимое файла непосредственно другой команде.
Знакомство со стандартными потоками
Каждая команда Linux взаимодействует с тремя «стандартными» потоками данных:
- Стандартный ввод (STDIN): источник, из которого команда ожидает получить ввод (обычно клавиатура).
- Стандартный вывод (STDOUT): поток, куда команда отправляет обычный вывод (обычно на экран).
- Стандартный поток ошибок (STDERR): поток, куда команда отправляет сообщения об ошибках (также обычно на экран).
Перенаправление позволяет изменить эти источники и места назначения по умолчанию.
Сохранение вывода с помощью '>'
Оператор > используется для перенаправления стандартного вывода (STDOUT) команды в файл. Вместо вывода на экран результат команды будет записан в указанный файл.
Важно: если файл уже существует, > перезапишет всё его содержимое новым выводом. Будьте внимательны и не удалите случайно важные данные!
Пример: сохранение вывода команды
Давайте сохраним вывод команды ls -l в файл с именем my_files.txt. Затем просмотрим содержимое файла с помощью cat.
ls -l > my_files.txt
cat my_files.txtДобавление в файл с помощью '>>'
Иногда не нужно перезаписывать файл — требуется добавить новое содержимое в его конец. Для этого используется оператор >>!
>> перенаправляет стандартный вывод (STDOUT) в файл, а если файл уже существует, добавляет новый вывод в его конец, сохраняя имеющееся содержимое.
Пример: добавление записей в журнал
Сначала создайте простой файл. Затем используйте >>, чтобы добавить в него ещё одну строку. Обратите внимание, что исходное содержимое сохраняется.
echo "First line of log." > app_log.txt
echo "Second line added." >> app_log.txt
cat app_log.txtОбработка ошибок с помощью '2>'
А что происходит с сообщениями об ошибках? Они отправляются в стандартный поток ошибок (STDERR). Чтобы перенаправить STDERR в файл, укажите дескриптор файла 2, а затем оператор >: 2>.
Это особенно полезно для записи ошибок в журнал, не загромождая основной вывод, а также для отладки сценариев.
Пример: запись сообщений об ошибках в журнал
Попробуем вывести список каталога, которого не существует. Обычно сообщение об ошибке появится на экране. Вместо этого перенаправим его в errors.log.
ls /this/path/does/not/exist 2> errors.log
echo "Command finished. Check errors.log."
cat errors.logПередача ввода с помощью '<'
Оператор < используется для перенаправления стандартного ввода (STDIN). Вместо ожидания ввода с клавиатуры команда прочитает его непосредственно из указанного файла.
Это удобно для автоматизации задач, в которых команда ожидает большой объём ввода, а также для непосредственной обработки содержимого файла.
Пример: сортировка из файла
Мы создадим файл с неотсортированными именами, а затем с помощью команды sort заставим её читать ввод из этого файла, используя <.
echo -e "Charlie\nAlice\nBob" > names.txt
sort < names.txtБыстрая проверка: перенаправление
Вы узнали о перенаправлении стандартного вывода, добавлении вывода, обработке ошибок и передаче ввода из файлов. Давайте проверим, насколько хорошо вы усвоили материал.
Повторение: возможности перенаправления ввода-вывода
Отличная работа! Вы освоили основы перенаправления ввода-вывода в Linux.
>перенаправляет STDOUT, перезаписывая файлы.>>перенаправляет STDOUT, добавляя данные в конец файлов.2>перенаправляет STDERR, сохраняя сообщения об ошибках.<перенаправляет STDIN, позволяя командам читать данные из файлов.
Эти операторы чрезвычайно полезны для написания сценариев, ведения журналов и автоматизации задач. Продолжайте практиковаться!
Часто задаваемые вопросы
Урок «Перенаправление ввода и вывода (>, >>, <)» бесплатный?
Да — полный текст урока «Перенаправление ввода и вывода (>, >>, <)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Command Line & Bash Scripting Mastery, подпишись на CoddyKit PRO. Курс Linux Command Line & Bash Scripting Mastery содержит 4 уроков всего.
Чему я научусь в уроке «Перенаправление ввода и вывода (>, >>, <)»?
Освойте перенаправление вывода команд в файлы и использование файлов в качестве входных данных для команд, повышая гибкость скриптов. Ты практикуешь Linux Command Line & Bash Scripting Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Linux Command Line & Bash Scripting Mastery?
Предыдущий опыт не требуется. Linux Command Line & Bash Scripting Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Перенаправление ввода и вывода (>, >>, <)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Linux Command Line & Bash Scripting Mastery?
Да. Каждый урок Linux Command Line & Bash Scripting Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Управление процессами (ps, top, kill)
- Перенаправление ввода и вывода (>, >>, <)
- Объединение команд в конвейер (|)
- Фоновые задания и управление заданиями