使用alias让命令行更便捷

在linux命令行上调试程序,经常是这样子做:

$ ps x | grep sceneserver
 8934 pts/9    S+     0:00 grep sceneserver
26908 ?        Ssl    8:34 ./sceneserver/sceneserver -d
$ gdb attach 26908

首先通过ps命令找出进程id,然后用gdb attach上去,但这里涉及到了输入两个命令,还有一个进程ID,特别是输入进程ID的时候,需要对着屏幕敲,或者复制下来。不管怎么样,都显得过于繁琐。

自然而然想把敲进程ID这一个步骤省略掉,于是想把两个命令合并到一起:

$ gdb attach `ps x | grep -v grep | grep sceneserver | awk '{print $1}'`
或者
$ gdb attach $(ps x | grep -v grep | grep sceneserver | awk '{print $1}')

``和$()内的命令输出,可以当做一个参数参与到前一个命令之中。这里面"grep -v grep"是为了在进程输出之中去掉grep进程的id。因为gdb attach只能接受一个进程id作为参数。在这里面xargs行不通,gdb会自动退出,原因暂时未知。

通过上面的过程, 我们节省了一个输入进程ID的过程,但是还是需要输入很长一段命令,甚至比之前的命令更长,这个时候我们就可以通过alias命令,将这个长命令映射到一个别名。

$ vim ~/.bashrc 

在.bashrc文件中新增这一行:

alias gs='gdb attach $(ps x | grep -v "grep" | grep "sceneserver" | awk '\''{print $1}'\'')'

然后保存退出,通过 source ~/.bashrc 命令应用此设置,或者重新连接终端,此时在命令行输入gs之后再回车,即可实现上述长命令可以达到的功能。

长期工作在命令行之上,善用alias,可以节省大量时间。

猜你喜欢

转载自www.cnblogs.com/minglee/p/9120567.html