电脑技术学习

对话 UNIX,第 7 部分: 命令行惯用语

dn001
$ man -k cron
cron (8)       - daemon to execute scheduled commands (VixIE Cron)
crontab (1)     - maintain crontab files for individual users (V3)
crontab (5)     - tables for driving cron
dh_installcron (1)  - install cron scripts into etc/cron.*

  在本示例中,man 找出了一些实用工具的 man 页面,其中有一行描述内容中包含单词 cron。这些 man 页面中可能解释了如何使用 cron,这是一个负责系统任务调度的守护进程。

  那么其中的数值代表什么含义呢?每个数值表示联机 Unix 手册中的一个部分。第 1 部分保留用于 UNIX 用户可以在 Shell 中运行的所有命令。第 5 部分描述了一些文件格式。第 8 部分对系统管理命令进行了编目。其他的部分描述了系统调用 (2)、库调用 (3),等等。

  正如您所看到的,大多数命令都会产生某类输出。大多数命令行命令使用标准输出来显示结果。但其他的一些命令则使用标准输出和标准错误,并按顺序显示处理过程和错误消息。如果您希望忽略这类输出(这是非常有价值的,因为它通常可以干预命令行中执行的操作),那么可以将输出重定向到 UNIX bit bucket,/dev/null。这些位只能进,不能出。

  下面是一个简单的示例:

$ ls
secret.txt
$ cat secret.txt
I am the Walrus.
$ cat secret.txt > /dev/null
$ cat socrates.txt > /dev/null
cat: socrates.txt: No such file or Directory
$ cat socrates.txt >& /dev/null
$ echo Done.
Done.

  如果将 cat 的标准输出重定向到 /dev/null,那么将不会显示任何内容,因为已将所有的位发送到了虚拟的“永久竖向文件。然而,如果出现了错误,将显示发送到标准错误的错误消息。如果您希望忽略所有的输出,可以使用 >& 操作符以便将 stdout 和 stderr 丢弃。

  您还可以将 /dev/null 作为一个长度为零的文件,以清空现有的文件或者创建新的空白文件:

$ cat secret.txt
Anakin Skywalker is Darth Vader.
$ cp /dev/null secret.txt
$ cat secret.txt
$ echo "The moon is made of cheese!" > secret.txt
$ cat secret.txt
The moon is made of cheese!
$ cat /dev/null > secret.txt
$ cat secret.txt
$ cp /dev/null newsecret.txt
$ cat newsecret.txt
$ echo Done.
Done.

  顺便提一下,如果您在 Macintosh 中使用 UNIX,那么可以在一个终端窗口中尝试 open 命令。例如,如果当前工作目录中有一个名为 poodle.jpg 的文件,命令 open poodle.jpg 将启动 Preview 并打开 poodle.jpg,Preview 是 Mac OS X 中内置的图像查看器。Mac OS X open 是命令行和 Macintosh 的窗口环境之间的纽带,并且它比借助于 Finder 要快得多。

  下面来总结一下!

  噢!尽管这是一辆高速行驶的列车,但现在您已经做好了准备,可以更深入地探索 UNIX。您甚至了解了在不需要某些内容时,应该将其丢弃。

  和以前一样,还有更多的内容需要介绍。在以后的几个月中,对话 UNIX 系列将深入研究作业控制、正则表达式(一种奇怪的方言,但并不难掌握)、如何编译从 Internet 上下载的新的实用工具,等等。

  不要忘了抹点防晒油哟!

标签: