对话 UNIX: 适用于任何 UNIX 系统的 10 个出色的工具(2)

来源:developerWorks 中国 作者:Martin Streicher
  
$ ./pwgen -s -B -1 -y
7gEqT_V[

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





用 multitail 查看许多文件

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

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

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

# As this article was written, the latest version of multitail was 5.2.2
$ wget http://www.vanheusden.com/multitail/multitail-5.2.2.tgz
$ tar xzf multitail-5.2.2.tgz
$ cd multitail-5.2.2
$ make
$ 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 还提供自己的格式,这种格式的压缩率比任何其他方案都高,容量限制达到 TB 级,支持强大的数据加密。

为了构建 7zip,需要从 SourceForge 上的项目页面下载 p7zip(7zip 的 UNIX 版本)的源代码(见 参考资料)。解压 tarball,进入源代码目录,运行 make。(与 multitail 相似,通用的 makefile 应该足够了;如果构建不成功,应该选择提供的专用 makefile 之一)。

$ wget http://voxel.dl.sourceforge.net/sourceforge/p7zip/\   
  p7zip_4.65_src_all.tar.bz2
$ tar xjf p7zip_4.65_src_all.tar.bz2
$ cd p7zip_4.65
$ make
$ sudo make install

构建过程会生成并安装实用程序 7za。输入不带参数的 7za,即可看到可用命令和选项的列表。与 tar 相似,每个命令都是一个字母,比如 a 在存档中添加文件,x 提取文件。

为了试试这个实用程序,以多种格式创建 p7zip 源代码的存档,然后用 7za 解压每个存档:

$ zip -r p7.zip p7zip_4.65
$ 7za -ozip x p7.zip
$ tar cvf p7.tar p7zip_4.65
$ 7za -otar x p7.tar 
$ bzip2 p7.tar
$ 7za -so x p7.tar.bz2 | tar tf -

从上到下,7za 依次解压 .zip、.tar 和 .bz2 存档。在最后一个命令中,7za 解压 .bz2 存档并把输出写到 stdout,在这里 tar 解压文件并编制目录。与 tar 相似,7za 可以作为管道(|)的源或目的地,因此很容易与其他实用程序组合在一起。





用 zcat 查看压缩的文件

单个磁盘的容量现在已经超过了 1TB,但是大型数据文件、日志文件、图像以及电影等媒体文件很快就把磁盘装满了。为了节省空间,可以把许多文件压缩到原大小的几分之一。例如,Apache 日志文件(是简单的文本)可以压缩到原大小的十分之一。

尽管压缩可以节省磁盘空间,但是也会增加工作量。例如,如果需要分析压缩的 Apache 日志文件,就必须解压它,处理数据,然后重新压缩它。如果有大量日志文件(如果保留分析趋势所需的记录,这种情况很常见),那么开销会非常大。

幸运的是,gzip 套件包含许多可以 “在原地” 处理压缩文件的实用程序。zcat、zgrep、zless、zdiff 等实用程序的作用分别与 cat、grep、less 和 diff 相同,但是它们操作压缩的文件。

下面,用 gzip 压缩两个源代码文件并用 zdiff 进行比较:

$ cat old
This
is 
Monday.
$ cat new
This
is 
Tuesday.
$ gzip old new
$ zdiff -c old.gz new.gz
*** -	2009-03-30 22:26:34.518217647 +0000
--- /tmp/new.10874	2009-03-30 22:26:34.000000000 +0000
***************
*** 1,3 ****
  This
  is 
! Monday.
--- 1,3 ----
  This
  is 
! Tuesday.





用 cURL 在 Internet 上做各种事情

以前的一期 “对话 UNIX” 推荐使用 wget 从命令行直接下载文件。在无法使用 Web 浏览器的情况下,在 shell 脚本中使用 wget 是非常合适的。例如,如果要在远程服务器上安装新软件,wget 确实可以节省时间。

如果您喜欢 wget,也一定会喜欢 cURL。与 wget 一样,cURL 可以下载文件,但是它还可以向 Web 页面表单提交数据、通过 File Transfer Protocol (FTP) 上传文件、作为代理、设置 Hypertext Transfer Protocol (HTTP) 头等等。cURL 在许多方面可以作为浏览器和其他客户机的命令行替代品。因此,它有许多潜在的应用。

通过常用的 ./configure && make && sudo make install 过程构建 cURL 实用程序。下载、解压并处理:

$ wget http://curl.haxx.se/download/curl-7.19.4.tar.gz
$ tar xzf curl-7.19.4.tar.gz
$ cd curl-7.19.4
$ ./configure && make && sudo make install

cURL 实用程序有很多选项,最好通读它的手册页。下面是一些常见的 cURL 用法:

  • 为了下载一个文件(比如 cURL tarball 本身),使用:
    $ curl -o curl.tgz http://curl.haxx.se/download/curl-7.19.4.tar.gz
    

    时间:2009-07-13 15:03 来源:developerWorks 中国 作者:Martin Streicher 原文链接

好文,顶一下
(4)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量