コマンドでエイリアスを作成する方法には、「と」が含まれています


10

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

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

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

alias aliasname='command'

これどうやってするの?このコマンドには、'との両方が含まれています"。別の方法を試しましたが、うまくいきませんでした。これは可能ですか?何か不足していますか?


5
地獄を引用しないようにするには、そのような場合に関数を定義する方が簡単かもしれません。
nohillside 2018

1
いずれにしても、@ nohillside関数の方が一般的にはより便利で強力です
D. Ben Knoble、

1
aliasname() { free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'; }-まだ1行だけで、引用/エスケープなどの変更はまったく必要ありません。freenode #bashチャネルfactoidが存在する理由があります!alias(そうでしたが、factoid ボットの寿命の大部分では、いくつかのバリアント):質問する必要がある場合は、代わりに関数を使用してください
チャールズダフィー

回答:


8

必要なもの:

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

"との両方をエスケープする必要があることに注意してください$


17

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) }'
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.