Linux中的alias命令可以将一条复杂的命令缩短为一个简单的指令,实际工作中经常会用到。使用alias的时候命令本身需要使用单引号包括起来。但是如果命令本身中包含单引号怎么办呢?
例如,下面这条命令:
1ps -ef | grep shadowsocks/server.py | grep -v grep | awk '{print $2}'
其作用是获取任务的pid。其中用到的awk
的参数需要用到单引号。alias也可以使用双引号,但是如果用双引号,其中的内容会被转义解释成具体获得的值。而不是命令本身。
这时可以使用 '"'"'
替代单引号。解释一下:
- ’ 使用单引号结束第一段;
- " 开启第二段,这里使用双引号;
- ’ 单引号本身;
- " 结束第二段,使用双引号;
- ’ 开启第三段,使用单引号。
所以最后的语句命令如下:
1alias stopssr='pid=`ps -ef | grep shadowsocks/server.py | grep -v grep | awk '"'"'{print $2}'"'"'`;if [ -n "$pid" ]; then kill -9 $pid; fi'