Будем сортировать данные в обратном алфавитном порядке; это делается опцией -r команды sort. Если вы хотите перечислить файлы в текущем каталоге в обратном алфавитном порядке, один из способов сделать это будет таким. Применим сначала команду ls:
/home/larry/papers# ls english-list history-final masters-thesis notes /home/larry/papers#Теперь перенаправляем выход команды ls в файл с именем file-list:
/home/larry/papers# ls $>$ file-list /home/larry/papers# sort -r file-list notes masters-thesis history-final english-list /home/larry/papers#Здесь выход команды ls сохранен в файле, а после этого этот файл был обработан командой sort -r. Однако этот путь является неизящным и требует использования временного файла для хранения выходных данных программы ls.
Решением в данной ситуации может служить создание стыкованных команд (pipelines). Стыковку осуществляет командная оболочка, которая stdout первой команды направляет на stdin второй команды. В данном случае мы хотим направить stdout команды ls на stdin команды sort. Для стыковки используется символ "|", как это показано в следующем примере:
/home/larry/papers# ls | sort -r notes masters-thesis history-final english-list /home/larry/papers#Эта команда короче, чем совокупность команд, и ее проще набирать.
Рассмотрим другой полезный пример. Команда
/home/larry/papers# ls /usr/binвыдает длинный список файлов. Большая часть этого списка пролетает по экрану слишком быстро, чтобы содержимое этого списка можно было прочитать. Попробуем использовать команду more для того, чтобы выводить этот список частями:
/home/larry/papers# ls /usr/bin | moreТеперь можно этот список "перелистывать".
Можно пойти дальше и состыковать более двух команд. Рассмотрим команду head, которая является фильтром следующего свойства: она выводит первые строки из входного потока (в нашем случае на вход будет подан выход от нескольких состыкованных команд). Если мы хотим вывести на экран последнее по алфавиту имя файла в текущем каталоге, можно использовать следующую длинную команду:
/home/larry/papers# ls | sort -r | head -1 notes /home/larry/papers\#где команда head -1 выводит на экран первую строку получаемого ей входного потока строк (в нашем случае поток состоит из данных от команды ls), отсортированных в обратном алфавитном порядке.