3

私は次のようなものを試しました:

alias fdi 'find . -type d -iname "*\!^*"' 

ただし、これは引数として渡された正確な名前のみを検索します。

fdi abc出力のみ:

./d/abc

これではない:

./d/greabcyup

私は正確な名前を探しているだけではありません。それも表示する必要があります./d/greabcyup

更新:やった

echo $0

tcsh

4

2 に答える 2

2

これは c-shell ですか、それとも tcsh ですか?

orielly lunix でdbl-checked を一言で言えば、 !^現在のコマンドラインの最初の単語であることを意図しているので、あなたが望むことをしているとは思いません。echo abc def !^from cmd-lineを使用して、その理論を自分で確認できます。(手元に csh がありません)。

しかし、エイリアスを作成すると、エイリアスに埋め込まれた最初の単語 (エイリアス) またはエイリアスの最初の単語 (検索) が取得されないことは明らかです。おそらく、csh の評価の順序についてです。

一般に、ほとんどのシェル (csh だけでなく) のエイリアスは引数を取ることができません。最後に、呼び出しに含まれていたものをすべて追加します。したがって、エイリアスは abc 引数を使用して展開されます

find . -type d -iname abc

そして、あなたが得た結果はそれをサポートしています。(csh デバッグを有効にして、先頭の hash-bang 行を に変更すると、何か役立つ情報が表示される場合があります#!/bin/csh -vx)

これが、他のシェルが機能を持っている理由です。

 function fdi() {
     find . -type d -iname "$@"
 }

ポリシーのために別のシェルを使用できず (bash、ksh、zsh はすべて強力なプログラミング言語です)、定期的に csh を使用する場合は、必ず「The Unix C shell Field Guide」のコピーを入手してください。 、ゲイル&ポール・アンダーソン。本当に非常によく書かれた本。

IHTH。

于 2012-11-02T02:29:31.560 に答える