Skip to main content

Ввод и вывод. Перенаправление ввода и вывода

Каждый процесс в Linux получает при старте три потока данных (специальные файлы). Первый открыт на чтение и является стандартным вводом процесса stdin (процесс из него берет данные, читает), по умолчанию это клавиатура. Второй поток открыт на запись и называется стандартным выводом процесса stdout (процесс в него записывает данные), по умолчанию это экран. Третий поток данных предназначен для вывода сообщений об ошибках и называется стандартный вывод ошибок.

Рассмотрит команду cat, которая берет данные с потока ввода и передает их на поток вывода, т.е. c stdin на stdout.

Введите команду cat. Поскольку не указаны потоки ввода и вывода, то считаются стандартными, т.е. ввод с клавиатуры, вывод на экран. Поэтому система будет ожидать ввода текста, а после сразу же выводить его на экран.

В команде cat имя_файла поток ввода указан из файла, поэтому данные будут читаться из файла и передаваться на стандартный поток вывода - экран.

Оболочка Shell дает возможность перенаправлять стандартные потоки, например, вывод делать не на экран, а в файл, чтобы данные были записаны и сохранены. Для этого используются символы > и < .

> - перенаправление стандартного вывода

< - перенаправление стандартного ввода

cat   >   textfile -поток ввода не указан, следовательно ввод с клавиатуры, а поток вывода перенаправлен в файл. Таким образом данные с клавиатуры записываются в файл.

Просмотрите созданный файл.

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

Добавьте в созданный файлtextfile еще данные: cat   >>   textfile

Снова просмотрите его.

cat   <   textfile   >   textfile2 - эта команда читает данные из файла textfile и записывает их в файл textfile2.

Команда sort данные, полученные с входного потока сортирует и направляет на поток вывода.

Используем эту команду, для сортировки данных введенных с клавиатуры и записи в файл text1.

sort   >   text1 Запишем построчно слова:

bananas

carrots

apples

Эти слова со стандартного входа обрабатываются sort и уже в алфавитном порядке поступают на поток вывода, который перенаправлен в файл text1.