Не удалось заставить системную переменную работать для руководств

У меня есть следующая системная переменная в .zshrc

manuals='/usr/share/man/man<1-9>'

я бегу безуспешно

zgrep -c compinit $manuals/zsh*

я получил

zsh: no matches found: /usr/share/man/man<1-9>/zsh*

Команда должна быть такой же, как следующая команда, которая работает

zgrep -c compinit /usr/share/man/man<1-9>/zsh*

Как запустить приведенную выше команду с системной переменной в Zsh?


person Léo Léopold Hertz 준영    schedule 30.04.2009    source источник


Ответы (2)


Судя по моим исследованиям, zsh выполняет <> подстановку до $ подстановки. Это означает, что когда вы используете вариант $, он сначала пытается заменить <> (ничего там), затем замену $ (что работает), и вы остаетесь со строкой, содержащей <> символов.

Когда вы не используете $manuals, он сначала пытается заменить <>, и это работает. Это вопрос порядка. Окончательная версия ниже показывает, как отложить расширение, чтобы они происходили одновременно:

Их можно увидеть здесь:

> manuals='/usr/share/man/man<1-9>'

> echo $manuals
  /usr/share/man/man<1-9>

> echo /usr/share/man/man<1-9>
  /usr/share/man/man1 /usr/share/man/man2 /usr/share/man/man3
  /usr/share/man/man4 /usr/share/man/man5 /usr/share/man/man6
  /usr/share/man/man7 /usr/share/man/man8

> echo $~manuals
  /usr/share/man/man1 /usr/share/man/man2 /usr/share/man/man3
  /usr/share/man/man4 /usr/share/man/man5 /usr/share/man/man6
  /usr/share/man/man7 /usr/share/man/man8
person paxdiablo    schedule 30.04.2009
comment
На этот раз я принимаю ответ Пакса из-за отличных примеров. Спасибо за ваш ответ! - person Léo Léopold Hertz 준영; 30.04.2009

Пытаться:

$> manuals=/usr/share/man/man<0-9>
$> zgrep -c compinit ${~manuals}/zsh*

'~' указывает zsh выполнять расширение <0-9> при использовании переменной. Справочная карта zsh расскажет вам, как это сделать и многое другое.

person sykora    schedule 30.04.2009
comment
@sykora: Знаете ли вы, как вы можете запустить эти папки для запуска справки, чтобы я мог искать файлы справки, просто набрав $ compinit Esc-h? - person Léo Léopold Hertz 준영; 30.04.2009