Сцепление ввода и вывода

А что если нам нужно сам ввод направить в вывод? Например, мы хотим, чтобы то, что мы вводим, сразу же выводилось.

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

В Linux есть такая программа. Она называется cat. Испытаем ее. После завершения ввода нажмем Ctrl+D (указатель конца ввода).

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

Содержание файла test.txt после cat

Мы только что научились создавать файлы и записывать в них информацию 🙂

Попробуем в этот же файл добавить еще несколько строчек.

Содержание файла test.txt после cat после добавления строк

Разумеется, для редактирования файлов существуют специальные текстовые редакторы, функционал которых позволяет не только создавать или добавлять текст, но и изменять существующий. И эти редакторы работают не только в графическом интерфейсе, но и в командной строке. Но с ними мы познакомимся позже.

А теперь попробуем вывести содержание файла test.txt, но не с помощью программы для чтения тестовых файлов less. Сделаем это командой cat. Для этого перенаправим ввод из файла less.txt.

С помощью cat очень удобно просматривать содержание мелких файлов. В отличии от less все содержание файла сразу же выводится и командная строка Linux Shell сразу же ожидает новой инструкции, без необходимости выходить из редактора с помощью кнопки «q».

А еще программа cat помимо вывода информации из стандартного ввода умеет напрямую выводит содержание файлов (без необходимости перенаправления ввода). Для этого после имени команды следует через пробел указать список файлов. Попробуем вывести содержание файла less.txt.

Обычно программа cat используется в качестве первого звена при составлении цепочки перенаправления вывода одной программы на ввод другой. При помощи cat считывается содержание файла, который отправляется на обработку следующей программы. Так инструкция из цепочки с несколькими командами выглядит наиболее читаемой и понятной для человека, чем перенаправление ввода.

Например, мы желаем через программу просмотра текста less открыть содержание файла test.txt, предварительно отсортировав в нем строки по алфавиту. Для этого воспользуемся уже известным нам инструментом sort. Для начала посмотрим как бы это выглядело, если бы мы воспользовались переадресацией ввода из файла. Если быть совсем откровенным, то программа sort по аналогии с cat умеет считывать данные из файла без перенаправления ввода, для этого необходимо лишь указать имена файлов после названия команды. Но сейчас нас интересует не работа программы sort, а принцип построения цепочек конвейерной обработки данных.

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

Сейчас наше указание выглядит наиболее понятным. Мы просим Linux Shell сначала открыть файл, потом отсортировать, а потом открыть результат в программе для чтения текста less. Если мы пожелаем добавить в цепочку еще какую-либо обработку данных, мы просто вставим ее в нужное месте. Ведь имя файла больше не привязано ни к одной команде обработки данных 🙂

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

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