日期:2014-05-16  浏览次数:20675 次

适用于任何UNIX系统的10个出色的工具
UNIX 工具一直在变化。本文介绍 10 个有用的工具,其中一些是您以前可能不太关注的工具,一些是新工具。 

与日常用语一样,UNIX 工具一直在变化。经常会出现新工具,同时老工具常常会改进以适应新的最佳实践。一些工具非常常用,其他工具不太常用。一些工具经久不衰,有些工具完全过时了。为了顺畅地操作 UNIX,您必须了解最新的 “行话”。

用 apropos 寻找命令

UNIX 的命令太多了,所以很容易忘记某个实用程序的名称;对于不常使用的工具,尤其可能出现这种情况。如果您正在努力回想一个命令名,那么试试 apropos(或等效的 man -k)。例如,如果您要找一个计算器,那么只需运行 apropos calculator:
01.$ apropos calculator

02.bc (1)        - An arbitrary precision calculator language

03.dc (1)        - An arbitrary precision calculator
复制代码bc 和 dc 都是命令行计算器。

每个 UNIX 手册页都有简短的描述,apropos 在描述中搜索指定的关键字。关键字可以是字面值(比如 calculator),也可以是正则表达式(比如 calc*)。如果使用后一种形式,那么一定要把表达式放在引号("")中,以防止 shell 解释特殊字符:
01.$ apropos "calcu*"

02.allcm (1)     - force the most important Computer-Modern-fonts to be calculated

03.allec (1)     - force the most important Computer-Modern-fonts to be calculated

04.allneeded (1) - force the calculation of all fonts now needed

05.bc (1)        - An arbitrary precision calculator language

06.dc (1)        - An arbitrary precision calculator
复制代码在命令行上运行计算

如上所示,dc 是在每个 UNIX 系统上都可以找到的计算器。如果不带参数运行 dc,就会进入交互模式,可以编写和运算 Reverse Polish Notation (RPN) 表达式:
01.$ dc

02.5

03.6 

04.* 

05.10

06./ 

07.p

08.3
复制代码但是,可以在命令行上做所有这些工作。指定 -e 选项并提供要运算的表达式。同样,要把表达式放在引号中,以防止 shell 解释它:
01.$ dc -e "5 6 * 10 /"

02.3
复制代码用pgrep寻找进程

您可能无数次使用 ps aux | grep ... 寻找进程。这当然是有效的,但是有一种更高效的搜索进程的方法。请试试 pgrep。

例如,以下命令寻找 strike 的所有登录 shell(其中的 strike 是用户名):
01.$ pgrep -l -u strike zsh 

02.10331 zsh

03.10966 zsh
复制代码pgrep 命令提供筛选选项,允许按用户名(上面给出的 -u)、进程组、组等筛选进程。配套的实用程序 pkill 接受 pgrep 的所有选项和一个信号,它把这个信号发送给与给定的条件匹配的所有进程。

例如,命令 pkill -9 -u strike zsh 与 pgrep -u strike zsh | xargs kill -9 等效。 

用 pwgen 生成安全密码

UNIX 中每个重要的子系统都需要自己的密码。电子邮件、远程登录和超级用户特权都需要密码,这些密码最好各不相同而且难以通过自动化攻击猜测或推断出来。另外,如果希望开发生成账户的脚本,就需要一个可靠的随机安全密码来源。

pwgen 实用程序是一个用来生成密码的小程序。可以把密码设定为更容易记忆的或更安全的,还可以指定密码是否包含数字、符号、元音和大写字母。

许多 UNIX 系统都有 pwgen。如果没有,也很容易构建它:
01.$ # As of March 2009, the latest version is 2.06

02.$ wget http://voxel.dl.sourceforge.net/sourceforge/\

03.  pwgen/pwgen-2.06.tar.gz

04.$ tar xzf pwgen-2.06.tar.gz

05.$ cd pwgen-2.06

06.$ ./configure && make && sudo make install
复制代码下面是一些使用示例:

?输出容易记忆的密码集合:

$ pwgen -C
ue2Ahnga Soom0Lu0 Hie8aiph gei9mooD eiXeex7N 
Wid4Ueng taShee3v Ja3shii8 iNg0viSh iegh5ouF 
...
zoo8Ahzu Iefev0ch MoVu4Pae goh1Ak6m EiJup5ei 

?生成一个安全的密码:

$ pwgen -s -1
oYvy9WWa

?生成一个安全的密码,其中不包含含糊(即容易混淆的)字符,至少包含一个非字母数字字符:

$ ./pwgen -s -B -1 -y
7gEqT_V[



输入 pwgen --help 可以查看所有可用选项。

用 multitail 查看许多文件

无论您是调试新代码的开发人员,还是监视系统的系统管理员,都常常需要同时查看许多东西。如果您是开发人员,为了寻找 bug,可能要查看调试日志和 stdout;如果您是管理员,可能要根据需要调整策略活动。这些任务常常需要在屏幕上显示许多窗口;例如,在一个窗口中执行 tail,在另一个窗口中执行 less,在第三个窗口中显示命令提示。

如果必须同时监视多个文件,那么可以考虑使用 multitail。顾名思义,这个实用程序把一个控制台窗口分割为多个部分,每个日志文件一个部分。更棒的是,multitail 可以给已知的格式加颜色标记(还可以定义定制的颜色方案),可以把多个文件合并成一个流。

为了构建 multitail,需要下载源代码、解压它并运行 make。(发行版的通用 makefile 中的选项对于大多数 UNIX 系统应该足够了。如果 make 运行失败,那么在顶层目录中寻找适合自己系统的 makefile)。
01.# As this article was written, the latest version of multitail was 5.2.2

02.$ wget http://www.vanheusden.com/multitail/multitail-5.2.2.tgz

03.$ tar xzf multitail-5.2.2.tgz

04.$ cd multitail-5.2.2

05.$ make

06.$ sudo make install
复制代码下面是 multitail 的一些使用示例:

?为了在同一窗口中查看多个日志文件,用一个文件名列表启动这个实用程序,比如 multitail /var/log/apache2/{access,error}.log。
?为了在同一窗口中查看两个文件并缓冲读取的所有信息,使用 -I 选项把指定的文件与另一个文件合并,比如 multitail -M 0 /var/log/apache/access.log -I /var/log/apache/error.log。在这里,把 Apache 错误日志和访问日志合并在一起。-M 0 记录输入的所有数据;在任何时候,按 B 键即可看到缓冲区。
?还可以组合命令和文件。例如,为了查看一个日志文件并监视 ping 的输出,可以使用 multitail logfile -l "ping 192.168.1.3"。这会在同一控制台中创建两个视图:一个视图显示 logfile 的内容,另一个视图显示 ping 192.168.1.3 的输出。


除了命令行选项之外,multitail 还提供一组交互式命令,它们影响显示的当前状态。例如,在显示中按 A 键可以添加新的日志文件。按 B 键显示保存的缓冲区。按 Q 键退出 multitail。命令的完整列表见 multitail 的手册页。 

用 7zip 压缩和解压几乎任何格式

Windows 和 UNIX 各有多种流行的存档格式。Windows 常常使用 .zip 和 .cab 格式,UNIX 有 .tar、.cpio 和 .gzip 格式。UNIX 及其变体还使用 .rpm、.deb 和 .dmg。这些格式在网上都很常见,局面比较混乱。

为了以任意格式保存或解压数据,可以安装一大堆专用的实用程序,也可以安装 7zip。它是一种通用的转换器,可以压缩和解压任何存档。另外,7zip 还提供自己的格式,这种格式的压缩率比任何其他方案都高,容量限制达到