Bash
如何使用包含“和”的命令創建別名
前幾篇文章有人問如何以百分比顯示記憶體。有人回复:
free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
我想知道是否可以將此命令轉換為 ~/.bashrc 中的別名。但是別名的語法是:
alias aliasname='command'
我怎樣才能做到這一點?該命令同時包含
'
和"
。我嘗試了不同的方法,但沒有奏效。這甚至可能嗎?我錯過了什麼嗎?
你需要:
alias aliasname="free | awk '/^Mem/ { printf(\"free: %.2f %\n\", \$4/\$2 * 100.0) }'"
請注意,您需要同時轉義
"
和$
。
說別名的語法
alias aliasname='command'
有點誤導,因為它似乎暗示單引號是語法的一部分。他們不是。等號後面的部分類似於變數賦值,因為它可以是任何 shell word,由普通字元(不帶引號)、帶引號的字元串或組合組成。這些都是有效的,最後三個等效:
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) }' }