'と'を含むコマンドを使用してエイリアスを作成する方法[重複]

'と'を含むコマンドを使用してエイリアスを作成する方法[重複]

いくつかの投稿の前に、誰かがメモリをパーセンテージとして表示する方法を尋ねました。誰かが答えた。

free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'

このコマンドを ~/.bashrc からエイリアスに置き換えることができるかどうか疑問に思います。ただし、エイリアスの構文は次のとおりです。

alias aliasname='command'

どうすればいいですか?このコマンドにはと'が含まれています"。私は成功せずに様々な方法を試しました。可能ですか?私は何を逃したことがありませんか?

答え1

エイリアス構文を言うのは、alias aliasname='command'一重引用符が構文の一部であることを示唆しているように見えるため、少し誤解を招く可能性があります。そうではありません。等号の後の部分は変数の代入に似ており、どのシェルでも構いません。言葉、一般文字(引用符を除く)、引用符付きの文字列、または組み合わせで構成されます。

これらはすべて有効で、最後の3つは同じです。

alias ks=ls
alias ls='ls -l'
alias ls="ls -l"
alias ls=ls\ -l

したがって、あなたがすべきことは、引用符を正しくエスケープしてエイリアス値に入れることです。

たとえば、参照してください。この回答そして、議論のために、次の質問に対する他の答えを提供します。

または、エイリアスの代わりに関数を使用して参照の問題を完全に削除してください。

freemem() {
    free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
}

答え2

以下を行う必要があります。

alias aliasname="free | awk '/^Mem/ { printf(\"free: %.2f %\n\", \$4/\$2 * 100.0) }'"

"とをすべてエスケープする必要があります$

関連情報