2011-09-16 2 views
-1

$ 1と似ていますが、空白文字を含むすべての入力を端末入力から集めますか?これは、空白を含んでいるかもしれない貼り付けられたディレクトリパスを収集するために使用されます - 私は文字列全体が必要です。アドバンス

おかげでありがたいことに、私は私の最初の質問への答えを受けました。しかし、実行すると、私はそれを動作させることはできません。ここに私のコードです。誰も私が間違っていることを説明することはできますか?ありがとう。

alias finder='cd $* && open .' 

セグメント化された戻り値が返されます。スペースに達するたびに、別のエントリとして扱われます。

答えて

3

Try $* or [email protected]

$*$*として

[email protected]同じ単一の単語として見位置パラメータのすべてが、各パラメータは引用符で囲まれた文字列、つまり、 パラメータは、解釈や拡張せずに、そのまま渡されています。

+0

もちろん、 '$ *'と '$ @'の両方を引用符で囲む必要があります。 – cnicutar

0

通常、最初の引数は、引用符を含めて"$1"と表示されます。

alias finder='cd "$1" && open .' 

... 

finder "/some/dir/with spaces/in its name" 

また、タブ補完でうまく動作のために空白文字をエスケープ:あなたは、引数としてディレクトリ名を使用したい、と名にスペースが含まれる場合は、コマンドライン上でそれを引用し、一般的だろう君は。この特殊なケースでは、おそらくopenコマンドを直接使用することもできます。

しかし、finderエイリアスで複数の引数を1つの文字列に連結し、スペースで区切って指定すると、実際にはより難しくなります。 $*[email protected]を使っていくつかの可能性を試しましたが、正しく動作しません。テストのために、自分のコマンドecholを使用しています。これは、それぞれの引数を別々の行に出力します。

$ echol foo bar 
foo 
bar 
$ alias e='echol "$*"' 
$ e foo bar 

foo 
bar 
$ alias e='eval echo \""$*"\"' 
$ e foo bar 
foo bar 

最後の1つは私が来たものですが、追加の先行スペースが追加されます。

あなたはディレクトリ名を引用するほうがよいと思います。

+0

それは私が次にやることです。お返事をありがとうございます。 – i4n

関連する問題