パスにCDを入れてls
自動で手に入れたいです。私は次のようなものを実行しようとしました。
cs() { cd "@a" ; ls}
しかし、これにより "Error in position()" エラーが発生するため、関数を実行できないようです。私も試しました
alias cs ' cd !:1 ; ls '
これを使用して.cshrcをインポートできますが、呼び出すことは何もしませんが、まだ同じフォルダにあります。
ベストアンサー1
あなたは非常に近いです。 Unixはバックスラッシュが大好きです。 Unixは朝食でバックスラッシュを食べます。あなたはする必要があります
alias cs 'cd \!:1; ls'
csh(およびその子孫)に関するドキュメントを見ると、前のコマンドを!
参照できる記録メカニズムを参照していることがわかります。最も簡単な場合は、!!
最新のコマンドを呼び出して繰り返します。
!:1
参照されたコマンドの単語#1を示します(ここで、コマンド自体は単語#0です。たとえば、in grep needle *.txt
、
!:0
is grep
、!:1
isneedle
など)。
BashとBourneシェルの他の子孫には、次の機能があります。非常に似ています。
Cシェルエイリアスは少し奇妙です。エイリアスを実行するとき、次のコマンドは入力した内容
(たとえば cs vacation_photographs
)は「前のコマンド」と見なされます。したがって、エイリアスが実行される!:1
と置き換えられますvacation_photographs
。
問題は、これが起こるということです。エイリアスのとき走る。
ただし、エイリアスが次の場合、履歴拡張が発生します。限られた、また。たとえば.cshrc
、
set prompt = '% '
alias cs 'cd !:1; ls'
その後、!:1
評価〜のようにprompt
、
エイリアスは次のように定義されますcd prompt; ls
。入力したコマンド()を参照するには、エイリアスをvacation_photographs
次のように定義する必要がありますcd !:1; ls
。したがって、バックスラッシュを使用してエイリアスの解釈を延期する必要がある!:1
のではなく、エイリアスが実行されるときです。定義されています。
今までやっていたら
alias cs 'cd !:1; ls'
しかし、うまくいきません何もない(エラーメッセージも表示されません)これを説明できません。