X 用户工具箱
在 Linux 下,您几乎可以从命令行完成所有操作。对于 Linux 服务器的管理员来说,这非常有用,原因有二:
通过简单的 TELNET 会话,可以从本地网络中的任何站点完成所有管理任务。
许多管理工作可以通过 shell 脚本轻松实现自动化。
然而,对于那些将 Linux 用作桌面操作系统的用户来说,许多操作使用 GUI 会比在 shell 提示符下键入晦涩的命令更容易。即使对于尚未准备好用 KDE 替换其精心定制的 FVWM 的保守用户,Linux 也提供了许多用于常见任务的图形工具。
要获取有关特定命令的信息,您需要阅读其 man 手册页,这可以通过在命令行中键入 man 来完成。然而,更舒适的方式是使用 man 手册页查看器,例如 xman 或 tkman。虽然 xman 是 X Window System 早期的一个丑陋的灰色鼠标,但 Tom Phelps 的 tkman 是一个真正不错的 GUI,用于浏览 man 手册页。
tkman 以一种令人愉快的方式显示 man 手册页(见图 1),它知道指向其他相关 man 手册页的超文本链接,允许在 man 手册页中进行正则表达式搜索,并具有内置的 apropos 命令,该命令为给定的关键字提供 man 手册页。如果您想从特定部分阅读 man 手册页,则必须在命令输入字段中添加一个点和节号;例如,如果您想获得关于 C 库函数 printf(man 手册页第 3 节)而不是 shell 命令 printf(man 手册页第 1 节)的帮助,您必须输入 man printf.3。
此外,您可以打印出显示的 man 手册页,但打印有点棘手。打印从菜单“Occasionals”->“Kill Trees”->“lp”启动,这将调用 man 手册页文本处理器 groff,选项 -Tps 用于 PostScript 输出,-l 用于将输出直接发送到打印机。除非在 groff 的配置文件 /usr/share/groff/font/devps/DESC 中指定了打印命令,否则后一个选项将不起作用。因此,如果从 tkman 内部打印不起作用,您将需要查阅 groff 的 man 手册页。
信息的另一个来源是超文本 info 页面,它由具有内部层次结构的节点组成。虽然 man 手册页更适合用于记录简单的 shell 命令,但 info 页面更适合用于需要大量文档的程序或库——理论上是这样。实际上,一些疯狂的程序员决定将像 ls 或 rm 这样的基本 shell 命令的文档从 man 手册页移动到 info 页面;因此,每个人都需要一个 info 阅读器。
在命令行中,您可以使用 info 命令读取 info 页面,该命令会在 info 模式下启动 Emacs。或者,您可以使用 Kennard White 和 Axel Boldt 的 tkinfo 作为图形化的 info 页面查看器。当在没有任何命令行参数的情况下启动时,tkinfo 会显示 “dir” info 节点,GNU 实用程序位于该节点下。如果您不喜欢 tkinfo 的显示字体,您可以在您的 .xresources 或 .xdefaults 文件中添加一个 tkinfo*Text.font 资源。虽然 tkinfo 具有更好组织的显示,并且比 Emacs 的 info 模式更直观,但它也有一个严重的缺点。在“File”->“Goto Node”菜单中输入的大多数节点都找不到。例如,即使通过命令行 tkinfo ls 调用,tkinfo 也找不到节点 “ls”。要访问节点 “ls”,您必须在 info 层次结构中导航,这是一个耗时的操作。
幸运的是,大多数命令也在其 man 手册页中得到了完整记录;因此,通常没有必要费心使用 info 页面。
qps 是 Matthias Engdegard 开发的,是 ps、top 和 kill 的图形化实现,并且基于 Qt 工具包。qps 是一个有吸引力且功能强大的工具。您可以通过从“View”菜单中选择“All Processes”,在“Options”菜单中指定“Update Period”,然后单击进程列表标题行中的“CPU”,使 qps 按使用的 CPU 时间对列表进行排序,从而将其用作 top 的高级版本。这将揭示哪些进程正在占用您系统上的处理器时间(见图 2)。或者,您可以通过从进程列表中选择一个进程并从“Signal”菜单发送信号,将 qps 用作 ps 和 kill 的组合。
乍一看,每个 Linux 发行版都附带的各种文件管理器(xfilemanager、xdtm、mfm、xfm、xgroups 等)似乎很有前景。然而,几乎所有这些工具要么非常基本,要么非常丑陋,或者两者兼而有之。Christian Bolik 的 TkDesk 是我遇到的唯一例外。
实际上,TkDesk 远不止是一个简单的文件管理器(参见 John Blair 在 1998 年 3 月的 LJ 中的“Introducing TkDesk”)。默认情况下,它甚至会启动一个单独的按钮栏,该按钮栏统治着桌面。这种突兀的行为可以通过菜单“TkDesk”->“Toggle Appbar”轻松关闭。当我开始使用 TkDesk 时,它经常在没有明显原因的情况下卡住不定时的时间间隔。我花了一些时间才意识到它试图创建我的系统不支持的声音效果。如果此默认设置引起麻烦,可以在菜单“Options”<->“Use Sound”中将其关闭。
我主要使用 TkDesk 来浏览深埋在我的系统目录树中的文件。这可以非常快速地完成,因为 TkDesk 具有内置的文件浏览器/编辑器。此外,它在三个目录列表框中显示文件,从而可以轻松地来回更改目录。三个是默认值,但您可以将其更改为您想要的任何数字。
通常,需要检查文件的两个版本之间的差异。您可以使用 shell 命令 diff 来实现此目的,但图形工具 mgdiff 或 tkdiff 的输出更容易阅读。
mgdiff 由 Daniel Williams 开发,可以像 diff 一样调用,使用两个文件名作为命令行参数。或者,它允许从“File”->“Open”菜单进行交互式文件选择;因此,可以从窗口管理器的程序菜单中调用 mgdiff。mgdiff 在两个框中显示选定的文件,并在右侧的小条中显示差异的概述(见图 3)。更改、插入和删除以不同的颜色突出显示,这些颜色可以通过 .xresources 或 .xdefaults 文件中相应的 X 资源进行自定义;有关详细信息,请参阅 mgdiff 的 man 手册页。此外,您只需单击差异的相应版本,然后使用“File”->“Save As”菜单保存结果,即可轻松地将比较的文件合并到一个新文件中。
对于使用版本控制系统的程序员来说,John M. Klassa 的 tkdiff 是另一个有用的差异工具。与 mgdiff 相比,tkdiff 只能从 shell 提示符调用,因为它需要文件名作为命令行参数。tkdiff 具有内部帮助功能,但没有外部 man 手册页,这有时会使获取使用信息不方便。除了这些琐事之外,tkdiff 提供的功能与 mgdiff 相同。此外,您可以将文件与版本控制系统(RCS、CVS 或 SCCS)中注册的该文件的不同版本进行比较。例如,命令 tkdiff -r filename 将 filename 与最近检入的修订版本进行比较。
不同 UNIX 计算机之间标准的数据交换格式是磁带归档格式 (tar)。此外,这些归档通常使用 compress(商业 UNIX 系统)或 gzip (Linux) 进行压缩,从而生成 tgz 文件。您可以使用 shell 命令 tar 来创建、提取或列出 tar 文件的内容。或者,xtar 和 tkzip 为 tar 提供了图形化前端。
xtar 由 Rik Turnbull 开发,只能列出和提取归档,但通常这已足够。当您使用 xtar 打开归档时,它会显示归档中所有文件的列表。双击列表中的文件会启动内置的文件浏览器。这对于新的软件包非常有用,因为您可以在解压缩归档之前阅读安装说明和 README 文件。
如果您更喜欢用于创建归档的图形工具,则需要更精细的软件包,例如 Robert Woodside 的 TkZip。在我看来,TkZip 太过繁琐:每次鼠标单击都会打开一个新窗口,这很快就会让人感到困惑,而且我的眼睛无法适应彩色边框和按钮。
启动后,TkZip 会显示当前目录中文件的列表;可以通过双击相应的文件来打开归档文件。与 xtar 一样,您可以通过单击归档列表中的文件来浏览文本文件。但是,您必须首先从查看器列表中指定一个图形查看器(例如,xless);否则,TkZip 会将文件的内容写入标准输出。
使用 TkZip 创建归档有点复杂,因为它需要跳过一系列文件选择对话框
从主窗口中,选择“File”->“New Archive”。
输入归档类型和归档文件名,然后选择“Create”。
在弹出式归档列表窗口中单击“Add”。
通过单击下一个窗口中的文件来选择要添加到归档的单个文件,然后选择“Add”按钮。
单击归档列表窗口中的“Close”最终会写入归档文件。
与 tar shell 命令相比,使用 TkZip 创建归档要复杂得多,并且只有在极少数情况下,当您想将文件系统中不同位置的多个文件打包到一个归档中时,才能节省时间。在更常见的情况下,当您只想打包一个或两个目录中的文件时,shell 命令既更快又更易于使用。
