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

$ ps x | grep sceneserver
pts/ S+ : grep sceneserver
? Ssl : ./sceneserver/sceneserver -d
$ gdb attach

首先通过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 $}'\'')'

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

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

最新文章

  1. leach-matlab
  2. salt 批量部署与配置
  3. 【数值方法,水题】UVa 10341 - Solve It
  4. [POLITICS] S Korea lawmakers vote to impeach leader
  5. Java基础知识强化之集合框架笔记51:Map集合之Map集合的功能概述与测试
  6. xmu1125 越野车大赛(三分)
  7. Android 系统稳定性 - ANR(一)
  8. CodeForces 735D Taxes
  9. SQL查询多条不重复记录值简要解析【转载】
  10. 简单认识一下什么是vue-router
  11. UML之对象图
  12. 笔记《JavaScript 权威指南》(第6版) 分条知识点概要1—词法结构
  13. 4698: Sdoi2008 Sandy的卡片
  14. 9.26 H5日记
  15. windows下,怎么轻易拷贝一个文件的完整路径?
  16. C#代码连接Oracle数据库一段时间以后[connection lost contact]的问题
  17. 微信小程序 - 3d轮播图组件(基础)
  18. 【转载】ArcBall二维控制三维旋转
  19. django入门-初窥门径-part1
  20. python 三级菜单 的另1种实现方法

热门文章

  1. 单项选择RadioButton和多项选择CheckBox的使用
  2. android代码设置EditText只输入数字、字母
  3. 限流之令牌桶算法——RateLimiter官方文档
  4. LeetCode 366. Find Leaves of Binary Tree
  5. 洛谷P2661 信息传递
  6. Tornado服务端基本的配置文件(Python)
  7. C++笔记之CopyFile和MoveFile的使用
  8. [转]Script标签和脚本执行顺序
  9. POJ1961:Period
  10. Volley请求图片