bashでzmv、zcalc、zparseopts、およびその他のzsh組み込みユーティリティを使用する方法はありますか?

bashでzmv、zcalc、zparseopts、およびその他のzsh組み込みユーティリティを使用する方法はありますか?

bash何年も使ってきましたし、今後も使い続けたいです。しかし同時に、そこにはいくつかのzsh素晴らしいユーティリティがあります。これらのコマンドのポートはありますか(たとえばzmv、別の実行可能ファイルとして存在しますzcalc)。または、次のトリックを使用する必要がありますか?zparseopts/binこれ

ベストアンサー1

zsh利点は、非常に優れたワイルドカードおよびパラメータ拡張演算子zmvにあります。zsh同様のものは 'のワイルドカードおよびパラメータ拡張演算子bmvに限定され、'ほど有用ではbashありません。zshzmv

同様の演算子を使用するforがある場合でも、そのzmv演算子を学ぶ必要があり、これらの高度な演算子を使用できない場所で使用すると不満を感じます。bashzshbash

とにかく、bash次の方法でいつでも後者を実行できます。

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

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

zmvここで、およびは、インタプリタへの新しい呼び出しでその関数をzcalc実行する関数として定義されます。zshzsh

bashしかし、この関数の制限は、明らかにシェルの内部変数にアクセスできないことです。

たとえば、pi = 4 * atan(1)thatでこれを行うと、zcalcその$pi変数はシェルで使用できなくなりますbash

同じ理由でこのアプローチをとることはzparseoptsまったく役に立ちません。

おすすめ記事