Есть ли способы использовать zmv, zcalc, zparseopts и другие встроенные утилиты zsh внутри bash?

Я использовал bashв течение многих лет и хотел бы остаться с ним. Но в то же время в zshесть утилиты, которыми приятно пользоваться. Существуют ли порты, чтобы такие команды, как zmv, zcalcили zparseoptsжили как отдельные исполняемые файлы /bin? Или я должен использовать такие приемы, как этот?

2
24.06.2020, 04:37
1 ответ

Сила оператора zshzmvзаключается в превосходных операторах подстановки и расширения параметров zsh. Аналогичный bmv, который был бы ограничен операторами подстановки и расширения параметров bash, нигде не был бы так полезен, как zshzmv.

И если бы у вас была zmvдля bash, которая использовалаzsh-подобные операторы, вам все равно пришлось бы их изучать, и тогда вы бы разочаровались при использовании bash, где вы не могли бы использовать эти расширенные операторы для остальных.

В любом случае, последнее всегда можно сделать в bashс помощью:

zmv() {
  zsh -c 'autoload zmv && zmv "$@"' zmv "$@"
}

zcalc() {
  zsh -c 'autoload zcalc && zcalc "$@"' zcalc "$@"
}

Которые определяют zmvи zcalcкак функции, которые запускают соответствующую функцию zshв рамках нового вызова интерпретатора zsh.

Обратите внимание, однако, что он ограничен тем, что эти функции, очевидно, не имеют доступа к внутренним переменным вашей bashоболочки.

Например, если вы выполните pi = 4 * atan(1)в этом zcalc, эта переменная $piвпоследствии не будет доступна в вашей bashоболочке.

По той же причине использование такого подхода для zparseoptsбыло бы совершенно бесполезным.

1
18.03.2021, 23:24

Теги

Похожие вопросы