0

Bashに関数があるとしましょう:

function ll {
    command ls -l $*
}

llのような作品を作ることですls -l。ほとんどの場合、うまくいきますが、

ls -l "ha ha"

name のファイルに対して機能しますha haが、

ll "ha ha"

と見なされるため、失敗します。

ls -l ha ha

これを機能させる方法はありますか?私たちはそれを成し遂げることができたと思います

function ll {
    command ls -l "$@"
}

( は と"$@"は異なり、"$*"個々"$@"に引用されていることを意味し、 while"$*"はすべて 1 つの文字列で引用されていることを意味します)

しかし、実際には機能しますll -t "ha ha"ls -l "-t" "ha ha"、ちょっと奇妙で、場合によっては故障する可能性があるかどうかはわかりません。

それを機能させる別の方法はありますか、そして別のことは、関数で考えcommand ls -l "$@"ls -l "$@"同じですか?(commandプログラムを直接実行し、再帰の発生を防ぐために可能なbash関数を呼び出さないだけですか?)

4

1 に答える 1

4

シェルは を実行する前に引用符の削除lsを実行するため、問題はありません。安心してご利用いただけます

function ll {
    command ls -l "$@"
}

として呼び出しますll -t "ha ha"。シェルのマニュアル ページを参照し、「引用符の削除」を検索してください。

于 2012-09-18T11:57:32.337 に答える