Unix别名命令无法按预期工作

Vij*_*jay 3 unix shell command-line alias ksh

我有一个命令来杀死一些进程如下:

kill -9 `psu|grep MF1pp|grep -v grep|awk '{print $2}'`
Run Code Online (Sandbox Code Playgroud)

命令工作得非常好

>psu|grep MF1pp|grep -v grep|awk '{print $2}'
29390
29026
$>kill -9 `psu|grep MF1pp|grep -v grep|awk '{print $2}'`
$>psu|grep MF1pp|grep -v grep|awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

当我创建如下的别名并运行它:

alias killaf="kill -9 `psu|grep MF1pp|grep -v grep|awk '{print $2}'`"



$> psu|grep MF1pp|grep -v grep|awk '{print $2}'
5487
5272
$>killaf
ksh: kill: bad argument count
Run Code Online (Sandbox Code Playgroud)

给出了上述错误.

谁能告诉我可能是什么问题?

Poi*_*nty 5

您正在设置别名的命令行未正确引用.具体来说,back-quote embedded子命令在您设置别名时执行,而不是在您实际想要运行别名时执行.

尝试以这种方式进行设置:

alias killaf='kill -9 `psu|grep MF1pp|grep -v grep|awk '\''{print $2}'\''`'
Run Code Online (Sandbox Code Playgroud)

编辑:修改awk命令周围的引号 - 当你已经单引号时嵌入单引号很棘手.