Алексей Федорчук
Ещё одна из часто используемых команд CLI — less
,относимая к семейству так называемых пейджеров (не путать с тем, чем лохи в песочницах ковыряются). То есть программ поэкранного просмотра файлов (преимущественно текстовых), в число которых входят также ветхозаветная утилита more
и некогда пропагандируемая в качестве прогрессивной программа most
.
Так вот, в Zsh все они оказываются излишними — благодаря механизму расширенного перенаправления эта командная оболочка справляется с пейджингом текстовых файлов сама. Например, такая конструкция, как
$ < ~/.zshrc
выведет на экран содержимое своего главного конфига. Которое, как и при выводе через, например less
, можно пролистывать поэкранно клавишами PgDown и PgUp, просматривать построчно стрелками Down и Up, отыскивать нужные последовательности символов с помощью /что_надо
, повторять поиск вперёд или назад с помощью клавиш n и N, соответственно.
Однако этим возможности расширенного перенаправления не ограничиваются. С помощью того же оператора <
можно просмотреть два (и более) файла в одном потоке. Так, конструкция
$ < ~/.{zshrc,zshenv}
выведет на экран последовательно содержимое обоих основных конфигов оболочки Zsh. Кстати, шаблоны файлов в этой конструкции также не запрещены, так что можно поступить ещё проще:
$ < ~/.zsh*
Однако и это ещё не предел возможностей: если вывод нескольких файлов перенаправить в новый файл (это называется множественным перенаправлением), то реализуется вековая мечта сочинителей всех времён и народов. То есть из нескольких отдельно написанных фрагментов (скажем, глав) создаётся единый текст (предположим, книги):
$ <chapter[01-10] > mybook
Таким образом, оба вида перенаправления в Zsh заменяют не ктолько команду less
(и аналогичные пейджеры), но и команду cat
, основным назначением которой является объединение файлов (конкатенация).
Существуют и другие области использования расширенного и множественного перенаправления. Однако и сказанного, думаю, достаточно для осознания полезности этих механизмов.
Диктуйте , пожалуйста , помедленнее — я не успеваю запиписывать . А ведь еще хотелось бы и понять о чём речь , таскасать.
Доброго!
$ < ~/.zsh*
zsh: no such file or directory: /home/wocson/.zsh*
и так при любых "*" в коммандах или аргументах…
Как сделать чтоб нормально стало? :)
Олег, диктую помедленней:
> Фильтрующийся вирус Zsh’а особенно бурно развивается в организме, укреплённом алкоголем, никотином, закуской всякой хорошей. А главное — любопытством и привычкой к чтению.
Об чём речь, вкратце — на этом сайте под тегом zsh. Подробно — в руководствам по ссылкам с http://zsh.org.
Vladimir Noskov, ответ на сакраментальный вопрос «что делать»:
1) проверить, есть ли в текущем каталоге файлы вида .zsh*;
2) проверить, если ли в ~/.zshrc строки, отвечающие за расширенное и множественное перенаправление.
Vladimir Noskov, пардон, у Вас не старая ли версия Zsh? Тогда требуется экранирование спецсимволов:
$ < ~/.zsh\*