8.10. Перенаправление и каналы

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

Обычно, стандартный вывод оболочки это ваш экран (или открытое окно оболочки), а стандартный ввод это клавиатура. При помощи определенных символов вы можете перенаправлять ввод или вывод к другому объекту, такому как файл или другая команда.

Перенаправление

При помощи > вы можете направить вывод команды в файл (перенаправление вывода), при помощи < вы можете использовать файл в качестве ввода для команды (перенаправление ввода).

Канал

Посредством символа канала | вы также можете перенаправлять вывод: при помощи канала вы можете соединить несколько команд, используя вывод одной команды в качестве ввода следующей команды. В отличии от других символов перенаправления, > и <, использование канала не привязано к файлам.

8.10.1. Примеры перенаправления и канала

  1. Для записи вывода команды типа ls в файл, введите

    ls -l > filelist.txt

    Это создаст файл под именем filelist.txt, который содержит содержание вашего текущего каталога, которое было получено командой ls.

    Тем не менее, если файл под именем filelist.txt уже существует, эта команда перезапишет существующий файл. Для предотвращения этого используйте >> вместо >. Ввод

    ls -l >> filelist.txt 

    просто прибавляет вывод команды ls в уже существующий файл под именем filelist.txt. Если файл не существует, он будет создан.

  2. Если команда создает длинный вывод, как, например, может ls -l, часто может быть полезно направить вывод в канал к программе просмотра типа less для того, чтобы иметь возможность прокручивать страницы. Для этого введите

    ls -l | less

    Содержание текущего каталога будет показано в less.

    Канал также часто используется в сочетании с командой grep для того, чтобы искать определенную строку в выводе другой команды. Например, если вы хотите посмотреть список файлов в каталоге, которым владеет определенный пользователь, tux, введите

    ls -l | grep tux