我定义了以下命令:
top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print "cpu=" 100.0-$8 "%"}'
它以以下形式返回 CPU 使用率
cpu=nn%
我现在想为上述命令定义别名“cpu”,但其中有引号和双引号。我该怎么办?
答案1
选择其中一个,要么消除对另一个的需要,要么逃避另一个。例如,用来""
指示字符串边界(在这种特殊情况下似乎更容易),我们首先在字符串周围加上引号:
alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print "cpu=" 100.0-$8 "%"}'"
然后,我们需要转义内部引号,以便它们不会终止 shell 所看到的字符串:
alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-$8 \"%\"}'"
然后,在此上下文中变为 shell 变量扩展(而不是 awk 变量表达式),因此我们也需要对其进行转义。如果我们能够使用(直撇号)来指示 shell 的字符串边界,$8
则无需这样做。''
alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-\$8 \"%\"}'"
跑步后上面的最终版本,有用:
$ alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-\$8 \"%\"}'"
$ alias | grep '^alias cpu='
alias cpu='...'
$ cpu
cpu=nn%
$