Bash カスタム組み込み

Bash カスタム組み込み

カスタム組み込み関数bash(例:)を作成したいと思いますtime。可能ですか?そうでない場合は、別のシェルに存在できますか?

たとえば、私はこれをCWDのすべてのディレクトリで実行しmap find -name '*.js' | xargs grep func1たいと思います。find -name '*.js' | xargs grep func1すべて参考にしてくださいパイプ付きに渡されますmap

目標は、複数のディレクトリにわたってコマンドを適用することです。私は生産されたすべてmapをカバーするスクリプトを書いた。ただし、パイプ、リダイレクトなどを含むコマンドを実行するには、文字列内のすべての内容を引用する必要があります。これが起こらないようにする方法を探しています。eval$1ls

また、これが可能かどうか疑問に思います。 ;)

ベストアンサー1

ATT ksh、bash、およびzshには、既存のシェルインスタンスに追加のコードをロードできる動的モジュールロードシステムと、新しい組み込み機能を実装するために動的にロードされたコードがあります。しかし、あなたは新しい組み込み機能以上のものを求めています。新しい構文が必要で、シェルはそれを処理できないと思います。シェルのソースコードでパーサーを変更する必要があります。

zshでは、目的の構文に近づくことができます。

for x (*/) (cd $x && pipeline)

エイリアスを作成できますが、alias map='for x (*/) (cd $x &&'最後にはまだ閉じる角かっこが必要です。粗雑なハッキングであなたの好みのフレーズを得ることができます。

alias map='map__PWD=$PWD; for x (./*/ "") cd $map__PWD${x#.}/ && [[ -z $x ]] || '

これは醜すぎて壊れやすく、一般化できないので説明しません。どのように機能するかを完全に理解していない場合は、使用を検討しないでください。

おすすめ記事