在alias命令中使用单引号

Linux中的alias命令可以将一条复杂的命令缩短为一个简单的指令,实际工作中经常会用到。使用alias的时候命令本身需要使用单引号包括起来。但是如果命令本身中包含单引号怎么办呢?

例如,下面这条命令:

1
ps -ef | grep shadowsocks/server.py | grep -v grep | awk '{print $2}'

其作用是获取任务的pid。其中用到的awk的参数需要用到单引号。alias也可以使用双引号,但是如果用双引号,其中的内容会被转义解释成具体获得的值。而不是命令本身。

这时可以使用 '"'"' 替代单引号。解释一下:

  • ‘ 使用单引号结束第一段;
  • “ 开启第二段,这里使用双引号;
  • ‘ 单引号本身;
  • “ 结束第二段,使用双引号;
  • ‘ 开启第三段,使用单引号。

所以最后的语句命令如下:

1
alias stopssr='pid=`ps -ef | grep shadowsocks/server.py | grep -v grep | awk '"'"'{print $2}'"'"'`;if [ -n "$pid" ]; then kill -9 $pid; fi'

附录A. 参考资料

热评文章