引用符を失うことなくbashから入力文字列を受け入れる方法は?

引用符を失うことなくbashから入力文字列を受け入れる方法は?

たとえば、私の.profileには次の機能があります。

alias () {
    command alias "$@"
}

ただし、これは次のことを行います。

$ alias test=ls

走れば $ alias test="ls"

引用符付き文字列を許可するにはどうすればよいですか?

答え1

コマンドラインの二重引用符はパーサーで使用されます。関数を呼び出すときは、エイリアス式全体を一重引用符で囲むか、バックスラッシュで各二重引用符をエスケープする必要があります(またはエスケープマークと引用符を混合)。したがって:

alias foo='echo "hi there"'
alias bar="echo "\"hi\ there\"

エイリアスの右側にスペースを含めることができるようにエイリアスをオーバーライドする場合は、以下を使用する必要があります。

command alias "$*"

違いは、このバージョンは、次のようにスペース(IFSの最初の文字)で区切られたすべての位置パラメータを拡張することですalias

alias foo=echo over here

関連情報