Я использовал bash
в течение многих лет и хотел бы остаться с ним. Но в то же время в zsh
есть утилиты, которыми приятно пользоваться. Существуют ли порты, чтобы такие команды, как zmv
, zcalc
или zparseopts
жили как отдельные исполняемые файлы /bin
? Или я должен использовать такие приемы, как этот?
Сила оператора zsh
zmv
заключается в превосходных операторах подстановки и расширения параметров zsh
. Аналогичный bmv
, который был бы ограничен операторами подстановки и расширения параметров bash
, нигде не был бы так полезен, как zsh
zmv
.
И если бы у вас была 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
было бы совершенно бесполезным.