1 авг. 2008 г.

Каналы

Каналы (pipes) - это, в некотором роде, комбинирование перенаправлений ввода и вывода. Принцип действия подобен физическому каналу, отсюда и такое название: один процесс отправляет данные в один конец канала, а другой процесс считывает данные на другом конце. Оператор канала - |. Давайте вернемся назад к примеру со списком файлов. Допустим, вам нужно сразу узнать, сколько там соответствующих файлов, но без сохранения списка во временном файле. Тогда вам надо воспользоваться следующей командой:
ls images/*.png | wc -l

которая означает, что стандартный вывод команды ls (т.е. список файлов) перенаправляется на стандартный ввод команды wc. При этом вы получите искомый результат.

Также вы можете сразу составить список файлов «без расширений», воспользовавшись следующей командой:

ls images/*.png | sed -e 's/\.png$//g' >the_list

или же, если вы хотите увидеть список сразу, не сохраняя его в файл:

ls images/*.png | sed -e 's/\.png$//g' | less

Действие каналов и перенаправлений не ограничивается только текстом, который может читать человек. Например, следующая команда, выполненная в Terminal'е:

xwd -root | convert - ~/my_desktop.png

отправит снимок вашего рабочего стола в файл my_desktop.png в вашем домашнем каталоге.

Комментариев нет: