Иногда было бы очень полезно, если бы вы могли записать вывод команды в файл для дальнейшего редактирования или если бы вы могли совместить несколько команд, используя вывод одной команды как ввод следующей. Оболочка предлагает эту функцию посредством перенаправления или каналов.
Обычно, стандартный вывод оболочки это ваш экран (или открытое окно оболочки), а стандартный ввод это клавиатура. При помощи определенных символов вы можете перенаправлять ввод или вывод к другому объекту, такому как файл или другая команда.
- Перенаправление
При помощи
>
вы можете направить вывод команды в файл (перенаправление вывода), при помощи<
вы можете использовать файл в качестве ввода для команды (перенаправление ввода).- Канал
Посредством символа канала
|
вы также можете перенаправлять вывод: при помощи канала вы можете соединить несколько команд, используя вывод одной команды в качестве ввода следующей команды. В отличии от других символов перенаправления, > и <, использование канала не привязано к файлам.
Для записи вывода команды типа ls в файл, введите
ls -l > filelist.txt
Это создаст файл под именем
filelist.txt
, который содержит содержание вашего текущего каталога, которое было получено командой ls.Тем не менее, если файл под именем
filelist.txt
уже существует, эта команда перезапишет существующий файл. Для предотвращения этого используйте>>
вместо >. Вводls -l >> filelist.txt
просто прибавляет вывод команды ls в уже существующий файл под именем
filelist.txt
. Если файл не существует, он будет создан.Если команда создает длинный вывод, как, например, может ls
-l
, часто может быть полезно направить вывод в канал к программе просмотра типаless
для того, чтобы иметь возможность прокручивать страницы. Для этого введитеls -l | less
Содержание текущего каталога будет показано в
less
.Канал также часто используется в сочетании с командой grep для того, чтобы искать определенную строку в выводе другой команды. Например, если вы хотите посмотреть список файлов в каталоге, которым владеет определенный пользователь,
tux
, введитеls -l | grep tux