有没有办法在 bash 中使用 zmv、zcalc、zparseopts 和其他 zsh 内置实用程序?

有没有办法在 bash 中使用 zmv、zcalc、zparseopts 和其他 zsh 内置实用程序?

我已经使用bash多年并且想继续使用它。但与此同时,其中也有一些zsh很好用的实用程序。是否有端口使这些命令(如zmvzcalczparseopts作为单独的/bin可执行文件存在)?或者我必须使用类似的技巧

答案1

zsh的优势zmv在于zsh极其优越的通配符和参数扩展运算符。类似的bmv仅限于bash's 通配符和参数扩展运算符,不会像zsh's那样有用zmv

如果您有一个使用类似运算符的zmvfor ,您仍然需要学习这些运算符,然后在使用无法使用这些高级运算符的地方时会感到沮丧。bashzshbash

无论如何,您始终可以bash通过以下方式执行后者:

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

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

zmv其中将和定义为在解释器的新调用中zcalc运行相应函数的函数。zshzsh

但请注意,它的局限性在于这些函数显然无法访问bashshell 的内部变量。

例如,如果您pi = 4 * atan(1)在 that 中执行此操作zcalc,则该$pi变量随后将在您的 shell 中不可用bash

出于同样的原因,采取这种方法zparseopts是完全没有用的。

相关内容