原文:10 Linux Commands You Probably Don’t Use

备注:此文已有两篇翻译。参考 译文美化版 。美化版作者(veldts)说原译文有不少可改进之处,因此手痒重译。而我则觉得原文有不少可改进之处,因此手痒,评述一二。

这些命令,作者有些语焉不详,窃以为原文大有可改进之处,点评如下。

1. 使用pgrep快速查找PID

pgrep能快速查找进程ID。接下来呢?最常见的场景是kill掉一个进程,例如:

$ pgrep top
8016
$ kill 8016

这样干有点傻,为何不直接用pkill top呢?有多个top进程的话,用killall top

2. 执行最近一次执行过的命令

执行最近一次的命令有很多途径,以简洁性而言,我更钟爱而不是!!,因为前者按键更少。不过需要把手指移动到主键盘之外,不是很方便。

3.执行最近一次以特定字母开头的命令

!cmd执行最近一次的cmd命令,并使用同样的参数。好处是省却输入大量参数的麻烦。例如:

$ history |grep scp
  355   scp localf berlinix@www.berlinix.com:/tmp/remotef

如果在scp ...之后执行了多个命令,要想再次执行这个命令并携带相同的参数,有几个方法:

  • 手工输入一次。
  • history找到命令,复制、粘贴并执行,或用!N,其中Nhistory记录编号。
  • Ctrl-R,进入命令搜索模式,输入sscscp等,即可自动找到历史命令。
  • !scp,即作者推荐方法。

以操作便利性而言,Ctrl-R命令搜索和!cmd模式最便利。

以上,条目2和3都是针对历史命令,可参考 这里

4. 反复执行一个命令并在屏幕上输出

在网络、I/O等可能快速变化的场合使用watch远比目录文件变化更为常见。如观察TCP连接:

$ watch -n 1 netstat -nt

5. 在VI/VIM中快速保存

Shift + zz快速退出Vim有点傻,因为很快你又要再次启动Vim,为何不用Ctrl-Z将Vim放到后台,然后随意执行命令,想返回Vim时再用fg(把后台进程调出)。

6. 快速退出终端会话

我能想到用Ctrl-D快速退出终端会话的场景是,你执行了一个如cat /bin/ls这样的操作,把屏幕搞出如下的样子:

enter image description here

这时,你需要Ctrl-D快速退出终端,接下来,再次快速进入终端。不过,且慢,更好的方法是用reset清理屏幕,无论你退出多快,都赶不上reset。提示:你输入reset这几个字时,可能在一片废墟上(看不清你的输入),但不要管它,输入完回车即可。

7. 返回上一次所在的目录

这条很简单,没什么好说。cd -使用频率很高。

8. 巧妙创建父目录

这条很简单,没什么好说。mkdir -p使用率很高。

9. 删除一整行

如果你是Vim用户,我建议把命令行输入配置为Vi模式(默认为Emacs模式),这样特别是输入长命令时,发生中途输入错误,就可以用w, b, 0, $, h, l, x等在命令字符上快速跳转乐。

Vi模式配置,在~/.bashrc中添加set -o vi,再执行. ~/.bashrc即可。

10. 设定文件的时间戳

这条很简单,没什么好说。但并不常用。