如何使用引号进行别名

我尝试使用引号进行别名,如下所示:

alias myalias='ps -ef | grep tomcat | kill -9 `awk {'print $2'}`' 

但正如你所看到的,我已经有了' awk”

所以我试图更换

 awk {'print $2'} 

 awk {"print $2"} 

但后来奇怪的事情发生在我运行这个别名,即控制台窗口closures…我怎么能使这个别名工作

使用函数而不是别名可以避免大多数引用问题:

 myfn() { ps -ef | awk '/tomcat/ {print $2}' | xargs kill -9; } 

如果你使用的是awk,不需要grep。

或者,坚持一个function,避免几乎所有的工作:

 alias myalias='pkill -9 -f tomcat' 

你可以用双引号“粘合”单引号:

 alias myalias='ps -ef | grep tomcat | kill -9 `awk {'"'"'print $2'"'"'}`' 

这是一个有趣的参考: https : //stackoverflow.com/questions/1250079/escaping-single-quotes-within-single-quoted-strings

但是,有更简单的解决scheme杀死一个进程,而不是使用多个pipe道或额外的单引号(Cf别人的答案)。 在这里,我只是想回答你最初的问题,保持你的逻辑。

不要运行这些多个pipe道,而是使用参数ps来获取仅以pid开头的参数:

 alias killtc='kill `ps -C tomcat -o pid=`'