xDroid's Blog

6 少即是多 (从新手到菜鸟的Linux教程)

昨天我们讲到了想要在终端上打印一个文件,可以使用cat命令。不过,万一文件太长怎么办呢?

你们可能正在疑惑“太长”是一个什么概念;想要看前面打印了什么,“难道不是只要把滚动条向上拖动就行了吗?”

说的好有道理,我竟无言以对。

其实呢,这几篇文章中我们所用的终端还不是真正意义上的“终端”;想要见识厉害的,可以按Ctrl+Alt+F1去看看。所以呢,Gnome Terminal实现了很多原来终端没有实现的功能,比如回滚。

嗯,我就知道有一部分人会重启以后从这里继续看下去(因为他们不知道可以简单地按Ctrl+Alt+F7切换回来)。

所以没有回滚的功能的时候该怎么办呢?在古老的VAX Unix系统上,有一个叫cr3的分页器,在一页文本已经显示完成后,会在底部显示“–more–”的字样,按下空格就可以看下一页。然而呢,这个命令很烦人,显示完一页会响一次铃,搞得机房里此起彼伏的声音。当时有一个叫Daniel Halbert的年轻人,不胜其烦,于是他一边读研究生课程一边改进了cr3,并将新工具命名为“more”。后来你们都懂的,人们合力写了一个GNU项目下的版本。

我们也来试一试;不过首先,我们来创建一个比较长的文件。

wang:~$ for i in `seq 1 50`; do echo "$i Long and Dull text"; done > long_dull_text

如果单纯地用cat来查看的话,就会出现这样的事情:

41 Long and Dull text
42 Long and Dull text
43 Long and Dull text
44 Long and Dull text
45 Long and Dull text
wang:~$

不妨试试more

1 Long and Dull text
2 Long and Dull text
3 Long and Dull text
4 Long and Dull text
5 Long and Dull text
--More--(9%)

按空格键是翻页,按回车键是往下看一行。

然而more命令并不能向前翻页,而且不能用方向键,还是有点笨拙。看到这些问题以后,另一个叫Mark Nudelman的人就动手写了一个能够向前翻页的“more”。为了“嘲讽”more能做的事情太少,有个笑话就说,“less > more”;这也正好印证了一句古话,“less is more, more or less”。

wiki上面是这么介绍less的:

less is a terminal pager program on Unix, Windows, and Unix-like systems used to view (but not change) the contents of a text file one screen at a time. It is similar to more, but has the extended capability of allowing both forward and backward navigation through the file. Unlike most Unix text editors/viewers, less does not need to read the entire file before starting, resulting in faster load times with large files.

那我们来试一试less:

1 Long and Dull text
2 Long and Dull text
3 Long and Dull text
4 Long and Dull text
5 Long and Dull text
long_dull_text

能用方向键的感觉是不是很好啊?滚动到底部的时候会出现(END)的提示。

顺便说一句,moreless都支持按q键退出。

其实同其他命(mo)令(fa)一样,less也有很多高深的技巧,只是限于篇幅不再展开了。