你从未用过的 10 条 Linux 命令?

Brock 老兄写了一篇文章《你从未用过的 10 条 Linux 命令(10 Linux commands you've never used)》,虽然标题有点过于绝对和主观,不过文章还是不错的。其实,无论你是否听说过或者使用过这些命令,都值得我们再来重温一遍。不是吗?

这 10 条 Linux 命令依次是:

  1. pgrep:比如,你可以使用 pgrep -u root 来代替 ps -ef | egrep '^root ' | awk '{print $2}',以便抓取属于 root 的 PID。
  2. pstree:我觉得这个命令很酷,它可以直接列出进程树,或者换句话说是按照树状结构来列出进程。
  3. bc:这个命令在我的系统中没有找到,可能需要安装。这是用来执行计算的一个命令,如使用它来开平方根。
  4. split:这是一个很有用的命令,它可以将一个大文件分割成几个小的部分。比如:split -b 2m largefile LF_ 会将 largefile 分割成带有 LF 文件名前缀且大小为 2 MB 的小文件。
  5. nl:能够显示行号的命令。在阅读脚本或代码时,这个命令应该非常有用。如:nl wireless.h | head
  6. mkfifo:作者说这是他最喜欢的命令。该命令使得其他命令能够通过一个命名的管道进行通信。嗯,听起来有点空洞。举例说明,先创建一个管道并写入内容: mkfifo ive-been-piped ls -al split/* | head > ive-been-piped

    然后就可以读取了:head ive-been-piped

  7. ldd:其作用是输出指定文件依赖的动态链接库。比如,通过 ldd /usr/java/jre1.5.0_11/bin/java 可以了解哪些线程库链接到了 java 依赖(动态链接)了哪些库。(感谢 NetSnail 的指正。)
  8. col:可以将 man 手册页保存为无格式的文本文件。如: PAGER=cat man less | col -b > less.txt
  9. xmlwf:能够检测 XML 文档是否良好。比如: curl -s 'http://bashcurescancer.com' > bcc.html xmlwf bcc.html perl -i -pe 's@<br/>@<br>@g' bcc.html xmlwf bcc.html bcc.html:104:2: mismatched tag
  10. lsof:列出打开的文件。如:通过 lsof | grep TCP 可以找到打开的端口。

这 10 条 Linux 命令,有些的确比较鲜为人知。我个人也只用过其中很少的几个命令,像 col、split、lsof 等等。当然,有些大牛们可能全部都用过。通过引荐本文,希望我们能够更加重视 Linux 命令的使用。

(via, thanks!)

Read More:

18 Comments

  1. 1 yuk Commented @ 2007-02-28 9:51

    呵呵,用过5个

  2. 2 NetSnail Commented @ 2007-02-28 11:32

    ldd 的描述不对,是输出指定文件依赖的动态链接库。 ldd /usr/java/jre1.5.0_11/bin/java 会显示java 依赖(动态链接)了那些库.

  3. 3 Toy Commented @ 2007-02-28 11:53

    @NetSnail:感谢你的指正。本文已经修改。

  4. 4 左倾45度 Commented @ 2007-02-28 13:27

    我用过4个

  5. 5 b1gm0use Commented @ 2007-02-28 13:50

    寒!只用过三个

  6. 6 b1gm0use Commented @ 2007-02-28 13:51

    cat -n 也能显示行号,不过输出跟nl有些差别

  7. 7 chewbaaca Commented @ 2007-02-28 16:56

    老用bc,当计算器使用来着

  8. 8 tomqd Commented @ 2007-02-28 23:08

    还真的一个都没有用过,好准啊

  9. 9 华华 Commented @ 2007-03-01 0:42

    没有 bc 的机器, 可以先用 python 命令行代替

  10. 10 Tian Commented @ 2007-03-02 16:52

    经常使用pgrep和ldd,lsof, 不过感觉split挺酷的,很有用,不过有没有办法把这几个splited文件重新合起来?

  11. 11 azhoulinux Commented @ 2007-03-02 17:27

    使用过七个!

  12. 12 ljmid Commented @ 2007-03-04 8:14

    Tian: cat file1 file2 file3 > merged

  13. 13 Tian Commented @ 2007-03-07 15:39

    jmid: 问题是如果不是普通文本数据,而是binary的呢,而且文件很大,用cat就不太合适了吧??

  14. 14 LanEast Commented @ 2008-07-15 10:25

    @Tian cat 是 Concatenate 的简写, 原本作用的其实就是合并文件, 对二进制也适用的.

  15. 15 poet Commented @ 2010-04-27 13:04

    ldd 的描述没什么不对,两个说法说的是一个意思。

    哪些动态连接库链接到了该程序,就意味着该程序依赖了哪些动态链接库。

  16. 16 riller Commented @ 2011-04-03 0:16

    pgrep经常用,pstree用过觉得很酷过后忘记怎么拼了,其他倒确实没。

  17. 17 cjxgm Commented @ 2011-07-13 12:41

    bc 好神奇:(整理过) sqrt(3)=1;
    sqrt(3.0)=1.7;
    sqrt(3.00000)=1.73205;
    sqrt(3.000000000000000)=1.732050807568877;
    sqrt(3.000000000000000000000000000000000000000)=1.732050807568877293527446341505872366942;
    sqrt(3.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)=1.73205080756887729352744634150587236694280525381038062805580697945193301690880003708114618675724857;
    sqrt(3.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) =1.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485756756261414154067030299699450949989524788116555120943736485280932319023055820679748201010846749232650153123432669033228866506722546689

  18. 18 delectate Commented @ 2011-11-06 18:17

    cat 或者 dd都可以做到合并文件