如何使用包含 ' 和 " 的命令创建别名

如何使用包含 ' 和 " 的命令创建别名

前几篇文章有人问如何以百分比显示内存。有人回复说:

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

我想知道是否可以将此命令变成 ~/.bashrc 中的别名。但别名的语法是:

alias aliasname='command'

我怎样才能做到这一点?该命令包含'"。我尝试了不同的方法,但没有成功。这可能吗?我错过了什么吗?

答案1

说别名的语法有点alias aliasname='command'误导,因为它似乎暗示单引号是语法的一部分。他们不是。等号后面的部分与变量赋值类似,可以是任何 shell单词,由纯字符(不带引号)、带引号的字符串或组合组成。

这些都是有效的,最后三个等效:

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) }'"

请注意,您需要同时转义"$

相关内容