Cintu и Zsh. Жизнь без команд less и cat

Алексей Федорчук

Ещё одна из часто используемых команд CLI — less,относимая к семейству так называемых пейджеров (не путать с тем, чем лохи в песочницах ковыряются). То есть программ поэкранного просмотра файлов (преимущественно текстовых), в число которых входят также ветхозаветная утилита more и некогда пропагандируемая в качестве прогрессивной программа most.

Так вот, в Zsh все они оказываются излишними — благодаря механизму расширенного перенаправления эта командная оболочка справляется с пейджингом текстовых файлов сама. Например, такая конструкция, как

$ < ~/.zshrc

выведет на экран содержимое своего главного конфига. Которое, как и при выводе через, например less, можно пролистывать поэкранно клавишами PgDown и PgUp, просматривать построчно стрелками Down и Up, отыскивать нужные последовательности символов с помощью /что_надо, повторять поиск вперёд или назад с помощью клавиш n и N, соответственно.

Однако этим возможности расширенного перенаправления не ограничиваются. С помощью того же оператора < можно просмотреть два (и более) файла в одном потоке. Так, конструкция

$ < ~/.{zshrc,zshenv}

выведет на экран последовательно содержимое обоих основных конфигов оболочки Zsh. Кстати, шаблоны файлов в этой конструкции также не запрещены, так что можно поступить ещё проще:

$ < ~/.zsh*

Однако и это ещё не предел возможностей: если вывод нескольких файлов перенаправить в новый файл (это называется множественным перенаправлением), то реализуется вековая мечта сочинителей всех времён и народов. То есть из нескольких отдельно написанных фрагментов (скажем, глав) создаётся единый текст (предположим, книги):

$ <chapter[01-10] > mybook

Таким образом, оба вида перенаправления в Zsh заменяют не ктолько команду less (и аналогичные пейджеры), но и команду cat, основным назначением которой является объединение файлов (конкатенация).

Существуют и другие области использования расширенного и множественного перенаправления. Однако и сказанного, думаю, достаточно для осознания полезности этих механизмов.

Моя Cintu. Оглавление

Cintu и Zsh. Жизнь без команд less и cat: 5 комментариев

  1. Диктуйте , пожалуйста , помедленнее — я не успеваю запиписывать . А ведь еще хотелось бы и понять о чём речь , таскасать.

  2. Доброго!

    $ < ~/.zsh*
    zsh: no such file or directory: /home/wocson/.zsh*

    и так при любых "*" в коммандах или аргументах…
    Как сделать чтоб нормально стало? :)

  3. Олег, диктую помедленней:
    > Фильтрующийся вирус Zsh’а особенно бурно развивается в организме, укреплённом алкоголем, никотином, закуской всякой хорошей. А главное — любопытством и привычкой к чтению.
    Об чём речь, вкратце — на этом сайте под тегом zsh. Подробно — в руководствам по ссылкам с http://zsh.org.

  4. Vladimir Noskov, ответ на сакраментальный вопрос «что делать»:
    1) проверить, есть ли в текущем каталоге файлы вида .zsh*;
    2) проверить, если ли в ~/.zshrc строки, отвечающие за расширенное и множественное перенаправление.

  5. Vladimir Noskov, пардон, у Вас не старая ли версия Zsh? Тогда требуется экранирование спецсимволов:
    $ < ~/.zsh\*

Добавить комментарий