3

C シェルで奇妙な動作に遭遇しました。次の行を記述すると、期待どおりの動作が得られます。

    ls -l | grep $USER | somescript `awk -F' ' '{print $1}'`

つまり、私が所有するすべてのアイテムを検索し、最初のフィールドを引数として「somescript」をアクティブにします。

ただし、同じ行をエイリアシングしようとすると、シェルが詰まります (または、中かっこをアポストロフィから分離すると、エラーメッセージが表示されます:

    alias doit 'ls -l | grep $USER | somescript `awk -F' ' '{print $1}'`'

いずれかになります

{: コマンドが見つかりません

print: コマンドが見つかりません

または、単に新しい端末が詰まったために起動できないという問題もあります。

シェルを強制終了せずに、このこと (および同様のもの - これは単なる例です) をエイリアスする方法はありますか?

4

1 に答える 1

3

地獄へようこそcsh。この答えがあなたの自殺を防いでくれるかどうかはわかりませんが...

% alias doit 'ls -l | grep $USER | somescript `awk -F'"'"' '"'"' '"'"'{print $1}'"'"'`'

結果:

% alias | grep doit
doit    ls -l | grep $USER | somescript `awk -F' ' '{print $1}'`

これは基本的に、それぞれが交互に引用符で囲まれた文字列の連結です。

'ls -l | grep $USER | somescript `awk -F'
"'"
' '
"'"
' '
"'"
'{print $1}'
"'"
'`'

(はい、これは単純化できますが、一重引用符を含むコマンドをエイリアス化するための一貫した一般的な手順を示したかったのです。)

于 2013-04-30T15:13:28.863 に答える