Bash предоставляет возможность перенаправления потоков ввода и вывода. Что это означает?

Стандартный ввод подразумевает данные, которые вводятся с клавиатуры. Экран монитора используется для стандартного вывода. Другими словами, в командной строке Bash ввод данных осуществляется с клавиатуры. Если команда требует текстового вывода, Bash отображает данные на экране.

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

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

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

В Bash используется символ больше ">" для обозначения перенаправления стандартного потока вывода в файл. Это значит, что cat, по умолчанию выводящий информацию на экран, теперь выводит ее в файл, и на экране будут отображаться только вводимые строки.

Пусть теперь мы хотим дополнить заметку сегодняшней датой, для этого перенаправим вывод команды date в тот же файл.

Дописывание в файл

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

На изображении выше, команда cat note.txt служит для чтения файла. Это означает, что если в cat передать аргумент, она больше не будет работать в интерактивном режиме, а прочитает данные из указанного файла и выведет их на экран. Фактически это эквивалентно cat < note.txt, где символ меньше "<" указывает на перенаправление ввода.

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

Ввод из файла

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

Команды grep, wc, sort

Команда grep ищет первый аргумент в наборе данных второго. Если находит, возвращает строку. Программа wc подсчитывает количество строк, слов и символов в файле. С помощью sort происходит сортировка строк.

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

С другой стороны, команды вроде ls корректно выполняют перенаправление вывода в файл.

Перенаправление вывода команды ls в файл

Вопросы для самопроверки:

  1. Что такое стандартный ввод и стандартный вывод в Bash?
  2. Какая команда используется, чтобы перенаправить вывод команды в файл?
  3. Чем отличается использование ">" от ">>" при перенаправлении вывода в файл?
  4. Какая команда используется для поиска строк в наборе данных?
  5. Что необходимо сделать для выполнения заранее подготовленного набора команд в Bash?

Программа курса:

  1. Описание курса
  2. История операционной системы Linux
  3. Основы лицензии GNU GPL и её преимущества
  4. Функции и структура ядра Linux-систем
  5. Структура и каталоги файловой системы Linux
  6. Основные типы файлов в системе Linux
  7. Интерфейс командной строки в Linux
  8. Командная оболочка Bash в Linux
  9. Использование параметров команд в Bash
  10. Использование Ctrl+C, Ctrl+D и Ctrl+Z
  11. Автодополнение и история команд в Bash
  12. Перенаправление ввода и вывода в Bash
  13. Документация Linux и Man-страницы
  14. Абсолютная и относительная адресация в Linux
  15. Команда ls - как просматривать каталоги в Linux
  16. Копирование, перемещение и удаление в Linux
  17. Жесткие и символьные ссылки в Linux
  18. Создание жестких и символических ссылок в Linux
  19. Права доступа к файлам и каталогам в Linux
  20. Изменение прав доступа к файлам с помощью chmod
  21. Использование шаблонов имен файлов в Linux
  22. Поиск файлов в Linux с помощью команды find
  23. Использование команды sudo в Linux
  24. Управление пакетами с помощью APT в Linux