关于 Linux,你的 DOS 手册不会告诉你的事

作者:Liam Greenwood

所以,你决定看看大家都在议论什么。你安装了 Linux,登录了你自己的 Unix 机器,准备开始飞速运转。嗯,奇怪的提示符

george:~#

它不太像 C:&gt:,但应该不会太难。你放入一张软盘并输入

george:~# dir a:
ls: a:: No such file or directory

本文中的命令和命令输出假定您正在使用 bash shell。此外,您无需输入提示符。

“我想知道如何查看软盘?” 你在提示符下输入 help,然后得到一个满屏的神秘命令模板。但是没有关于 dir 的内容。啊!在第二列,是 dirs。“没问题,” 你心想,自信地输入

george:~# dirs a:

...然后得到 dirs: unknown option: a:。“哦,对了,” 你嘟囔着,“Unix 没有 a:c: 驱动器。再次 help,让我们仔细看看。这里写着:help [pattern...],所以你输入

george:~# help dir
dirs: dirs [-l]
   Display the list of currently remembered
   directories. Directories find their way
   onto the list with the `pushd' command;
   you can get back up through the list with
   the `popd' command.
   The -l flag specifies that `dirs' should not
   print shorthand versions of directories which
   are relative to your home directory. This
   means that `~/bin' might be displayed as
   /homes/bfox/bin

现在有点困惑,你尝试

george:~# dir
total 1
lrwxrwxrwx 1 root  root 8 Aug 2    21:39  INSTALL -> /var/adm/
lrwxrwxrwx 1 root  root 14 Aug 2   21:39  linux -> /usr/src/linux/
drwx------ 2 root  root 1024 Aug 3 18:05  mail/

呼,有些东西起作用了。但这到底是什么意思呢?不同的颜色、箭头,你的登录名在每个文件上都出现了两次,你仍然不知道如何列出软盘上的内容。事实上,你开始怀疑最初认为 Linux 这东西是个好主意的原因是什么。

帮助就在路上

如果 Linux 是你首次涉足 Unix 世界,那么与在商业系统上入门相比,你处于 थोड़ा 不利地位:没有手册。幸运的是,Unix 长期以来都将其文档放在线上。事实上,我大约在 11 年前工作的第一个系统,通常只附带供应商特定的印刷手册,而大部分文档都在线上。因此,这里有一些技巧,教你如何在没有一套印刷手册的情况下发现你需要知道的东西。manaproposwhatismorelesslsfind 的快速导览。在哪里可以找到 Usenet 上 comp.os.linux.help 以外的信息,以及在哪里可以找到 Usenet 以外的信息,以及在 Linux Journal 中。

第一站是 manaproposwhatis 这有用的三位一体。其中最重要的是 manman 是你访问在线手册集的入口。apropos 是用于手册集的关键字搜索工具,而 whatis 是命令的快速参考。man 还具有执行 apropos 的关键字搜索和 whatis 的快速参考的能力。

最好的开始方式是尝试输入

george:~# man man

这是在在线手册中请求关于其自身的手册页。“man” 手册页的标题是 “man(1)”,后面跟着 NAME 条目、SYNOPSIS 条目,然后是描述。NAME 条目给出名称以及此手册页上解释的事物的简短描述。SYNOPSIS 是运行命令的模板,其中显示了所需的格式、选项和参数。DESCRIPTION 条目是对命令、其调用约定、选项、参数和其他详细信息的详细描述。在手册页的末尾附近有两个非常有用的部分,SEE ALSO 和适当的 FILES 部分。SEE ALSO 部分列出了与你刚刚查找的手册页相关的其他手册页。FILES 部分列出了与你正在查看的命令相关的文件,例如,配置文件。

man 程序有三个非常有用的选项。它们是 -a-f-k-a 选项告诉 man 程序不要在找到第一个页面时就停止查找页面,而是扫描所有手册页部分,并向你展示所有相关的页面。你现在可能想知道这些部分是什么以及它们为什么存在。手册页本身可以帮助我们解决这个问题。

如果你还记得,当你输入 man man 时,结果手册页的标题是 “man(1)”。这意味着该页面是在手册的第一部分中找到的。如果你现在输入

george:~# man -a man

你将再次看到 “man(1)” 手册页。现在输入 q 以离开手册页查看器。你不会被放回提示符,而是会得到另一个要查看的手册页,其标题是 “man(7)”。这是关于如何创建手册页的描述,来自第七部分。在 “man(7)” 的大约第三个屏幕上,有一个各种手册部分的列表。如果你知道你只想查看关于如何创建手册页的页面,你可以通过输入以下命令绕过 “man(1)” 页面

george:~# man 7 man

如果你记得命令的名称,但不记得它的作用,那么你需要的是 whatis 命令(或 man -f)。这些命令搜索一个特殊的 “whatis” 数据库,并返回一个带有简短描述的匹配列表。

george:~# whatis man
man (1)         - Format and display the on-line manual pages
man (7)         - Macros to format man pages
man.config (5)  - Configuration data for man

在这种情况下,它还为我们提供了一个指向另一个与 man 相关的 man 页面的指针,我们可以在其上执行 man man.config 或 man 5 man.config

通常,你会知道你想做什么,但不知道命令名称。要对 “whatis” 数据库进行关键字搜索,你可以使用 apropos 命令或 man -k。例如,要找出如何复制文件,man copy 和 whatis copy 都无济于事。使用 apropos copyman -k copy 返回 22 行匹配项,包括 entry cp(1) - Copy files

另一种查找信息的有价值的方法是 “浏览文件系统”。你需要的工具是 cd、ls 以及 more 或 less。另一个有价值的小助手是 find 命令。

我所说的 “浏览文件系统” 是什么意思?它只是意味着浏览文件系统以查找有趣的文件,阅读任何文本文件,并查看任何可执行文件的手册页。你使用 ls 列出文件和目录,使用 cd 进入看起来有趣的目录,并使用分页程序 more 和 less 阅读任何文本文件。所以在我的系统上,我可以 cd /usr,我在 ls 输出中看到的一个目录叫做 doc。当我执行 ls doc 时,我看到其中一个目录是 faq。我执行 ls doc/faq,看到其中一个目录叫做 howtols howto 目录向我展示了它包含 Linux HOWTO 文档的集合。我 cd /usr/doc/faq/howto,然后我可以,例如,more READMEless Mail-HOWTO

可执行文件呢?让我们举一个我朋友的例子。当他在 ls /bin 中看到一个名为 dialog 的程序时,他正在四处查看。他觉得它看起来很有趣,于是执行了 man dialog,发现它是一个用于在 shell 脚本中创建对话框的程序。大约三天后,一本 Linux Journal 到达,其中有一篇关于 dialog 框的文章。我仍然想知道为什么我的 man 副本不会自动导致 Linux Journal 文章被撰写出来。

关于浏览文件系统的一个重要注意事项:不要随机执行程序。墨菲定律表明,当你尝试一些看起来无害的程序时,只有重要且难以替换的数据才会丢失。在尝试程序之前,请查找并阅读手册页。如果没有手册页,则查找其他文档。使用 find 命令来帮助你搜索更多信息;它是一个强大而灵活的命令,允许你根据许多文件属性在文件系统中执行搜索。我将给你一个按名称搜索的示例。我可以查找任何文件名中包含字符串 readme 的文件,并将名称打印在屏幕上,使用以下构造

george:~# find / -iname `*readme*' -print

其中 find 是命令,/ 是搜索的起始位置,-iname 表示对以下字符串 (*readme*) 执行不区分大小写的文件名搜索,-print 表示显示结果。如果我要执行区分大小写的搜索,我会将 -iname 替换为 -name

为什么我不直接使用 find 命令进行所有查找?通过遍历目录,你可以构建更好的系统路线图,并且你可以找到你不知道要搜索的东西。当你不知道 HOWTO 文档存在时,你如何让 find 搜索 HOWTO 文档?

关于 Linux 文档的警告:所有文档都是由志愿者努力提供的,并且由于许多人发现编写文档不如编写程序有趣,因此不可避免地会出现在线文档不完整的时候。可能存在没有手册页或其他文档的程序。文档可能已过时,或者可能存在不准确之处。因此,请为一些不一致之处做好准备。另一个需要注意的是,文件中在发行版中的位置完全取决于创建发行版的人。他们认为文件应该放在哪里,手册页中是如何记录的,可能不是它们在你发行版中的实际位置。文件名不太可能被更改,因此使用 find 解决此类差异非常简单。

对于没有手册页的程序,情况并非如此简单。但是,Linux 是一种 Unix 类型。出版了许多关于 Unix 的书籍,其中大多数都与 Linux 系统相关。有来自 O'Reilly and Associates、The Waite Group 等出版商的关于学习使用 Unix、Unix 参考书和 Unix 系统管理书籍。此外,我强烈推荐 SSC 的 Unix 命令摘要之一。这些摘要就像扩展了你的 “whatis” 数据库,使其包含手册页中的概要和选项,并将它们打印出来。

如果你可以访问 Usenet 新闻组,那么你可能已经浏览了一个或多个 Linux 讨论组。除了这些组之外,comp.unix 层次结构中还有许多其他 Unix 讨论组。news.answers 定期发布许多 Unix FAQ(常见问题解答);特别是,有一个 Unix 书籍 FAQ。有关于新闻阅读器 (news.software.readers)、编辑器 (comp.editors, comp.emacs)、邮件 (comp.mail 层次结构) 和许多其他主题的新闻组,因此不要将自己限制在 comp.os.linux 组中。

哦,如果你仍然无法在你的 A: 驱动器上获取目录列表,这里有一个提示:man mount。

加载 Disqus 评论