Bla*_*tal 10 bash alias quoting
几篇文章前有人问过如何以百分比显示内存。有人回复:
free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以将此命令转换为 ~/.bashrc 中的别名。但是别名的语法是:
alias aliasname='command'
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?该命令同时包含'
和"
。我尝试了不同的方法,但没有奏效。这甚至可能吗?我错过了什么吗?
ilk*_*chu 17
说别名的语法alias aliasname='command'
有点误导,因为它似乎暗示单引号是语法的一部分。他们不是。等号后面的部分类似于变量赋值,因为它可以是任何 shell word,由纯字符(不带引号)或带引号的字符串或组合组成。
这些都是有效的,最后三个等效:
alias ks=ls
alias ls='ls -l'
alias ls="ls -l"
alias ls=ls\ -l
Run Code Online (Sandbox Code Playgroud)
因此,您需要做的就是正确转义引号以将它们包含在别名值中。
参见,例如这个答案和其他答案,例如这些问题的讨论:
或者,使用函数而不是别名来完全摆脱引用问题:
freemem() {
free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
}
Run Code Online (Sandbox Code Playgroud)
你需要:
alias aliasname="free | awk '/^Mem/ { printf(\"free: %.2f %\n\", \$4/\$2 * 100.0) }'"
Run Code Online (Sandbox Code Playgroud)
请注意,您需要同时转义"
和$
。
归档时间: |
|
查看次数: |
671 次 |
最近记录: |