Linux 命令行下的好东西( 三 )


help
上面提到了 "builtin command" 也就是内置命令,就是由 shell 提供的一些基本的或者无法由外部程序做到的命令 。平常你可以用 man 来查看文档,但是对于内置命令 man 会跳到 shell 自己的 manpage,在某些系统里那就是巨大的一页你要再里面找到你想看的东西,有些系统里干脆就没有相关的信息 。这种时候用 help 这个内置命令就可以解决这个问题:比如要查看 set 的接受的选项,可以用 help set 来轻松找到 。
env
你应该知道在 #! (shebang) 在脚本第一行的作用是指定其 'runtime' 。比如说你想要写一个 Python 的脚本,但其实不太在意其版本,或者不确定其可执行文件在不同的机器上到底在哪里 。那么 env 在这里就可以派上用场了 。可以写成 #!/usr/bin/env python,这样执行的时候就会用当前 PATH 中找到的 python 。另一方面这个也是一个给你一个在不修改代码的情况下,重新选择 'runtime' 的机会 。
file
如果你想知道某个路径上的文件到底是什么类型的,那么用 file 是再合适不过的了 。它能对任何东西都给出一个有意义的解释,对于二进制文件还会列出很多相关的重要信息 。
strings
“我把我的秘密,放在了这个用 C++ 编写的程序里面 。运行它输入正确的密码才能看到” 。其实万一遇到这种情况你只要跑 strings program-written-in-cxx 十有八九你就能看到了 。它能比较准确的列出二进制文件里包含的 C 风格的字符串 。看起来没什么意义但是其实作用完全要靠你发挥,比如要知道某个程序是哪个版本 GCC 编译出来的用 strings 可能有结果 。
od
全程应该是 "object dump",可以将文件按八进制,十六进制或者其他方式显示出来 。我觉得大部分情况下这大家都在用 od -c,将文件按 ASCII 码 dump 出来 。一个用例是用来看文件的 line ending 到底是怎样的 。比如执行 od -c foo.txt 显示如下结果:
$ od -c foo.txt 0000000 h e l l o t w o r l d r n y e a0000020 h0000021可以清楚的看到 t 是 tab 字符,rn 是 Windows 风格的换行符 。
最后
没什么特别的,只是如果后面还碰到好用的命令行工具我会再添加在这里 。

【Linux 命令行下的好东西】


推荐阅读