下面两个命令有什么区别?
more file-name
less file-name
bat
是 cat
的替代品,但整体体验就像是有着类固醇效果的 less
。 - Pablo Bianchiless
。有一些Linux操作系统不兼容Unix,因此没有more
。我使用过的任何Linux操作系统默认都没有安装most
。有些甚至根本没有它。相反,所有非Linux的Unix系统都有more
。有一些GNU操作系统有less
,但不使用Linux。有一些操作系统有most
,但不使用Linux。例如,我使用的macOS与Linux无关,但我三者都有。 - Jörg W Mittagmost
不是GNU的一部分,所以即使出于某种奇怪的原因,你选择重新定义"Linux"为"GNU/Linux",那么"most"与Linux无关的论点仍然成立。我一直认为"Linux"意味着"Linux","GNU"意味着"GNU",而"GNU/Linux"意味着"GNU/Linux"。如果同时将"Linux"和"GNU/Linux"都解释为"GNU/Linux",而"Linux"却不表示"Linux",那会非常令人困惑。 - Jörg W MittagLESS_IS_MORE
的变量。
less
命令支持一个名为LESS_IS_MORE
的shell/环境变量。默认情况下,less
命令的行为与旧的more
命令相似,但如果less
命令发现该变量被设置为1(数字一),则less
命令将提供更少的功能,以增加与名为more
的旧分页命令的兼容性。less
都支持此功能。这在less
(1)(less
的“man页面”)中提到。less
命令支持许多程序在类Unix环境中使用的行为,即检查它运行时的文件名。如果运行less
程序的命令行以more
作为文件名开头,则less
程序将以增加与旧的more
命令的兼容性的方式运行,类似于运行LESS_IS_MORE
命令的效果。more
的单独程序。嗯,准确地说,有一个可用的名为more
的命令(强烈建议用于与脚本和一些常见用户行为的兼容性),但是less
和more
命令都是指向相同可执行代码位流的“硬链接”。因此,当运行名为less
的命令时,操作系统实际上运行的可执行代码与运行名为more
的命令时运行的可执行代码是相同的。(这甚至不仅仅是运行相同代码的情况。从数据存储设备的完全相同位置读取数据,所以它们使用的确实是完全相同的代码。)因此,less
就是more
的说法是一个字面(事实性、非主观、可证明的)真理,因为这两个程序实际上都使用了完全相同的可执行代码。(但是,根据使用的命令不同,程序的行为可能会有所不同。)less
is more
,literally.”,那么这个人可能是想澄清less
命令和more
命令共享相同的可执行位。这可以通过“硬链接”(使用ln
实现)最有效地完成,但也可以通过“符号链接”(使用ln -s
实现)或者通过复制可执行文件的位的副本(可以使用cp
轻松实现)来实现。less
命令具有更多的好功能,因此less
命令比旧的、更传统的分页命令more
的命令和一个名为less
的命令,作为操作系统的一部分安装在其中。(另一个答案中提到了进一步构建在less
命令之上的most
命令,但是它预装在的系统要少得多。所以,首先需要安装该程序。)然而,more
命令也可能预装在更多的计算机上,包括那些通常不被认为是主要基于Unix兼容性设计的计算机。more < filename.txt
more
。一个典型的演示方法是显示一个命令来显示文本文件的内容。在Unix中,通常使用cat
来完成这个任务。MS-DOS没有cat
命令,而是使用type
命令。(Unix有一个单独的type
命令,功能完全不同。)所以:
cat file.txt | more
type file.txt | more
(请记住,当我提到DOS时,也适用于现代的Microsoft Windows,更不用说其他系统如OS/2了。因此,这些DOS参考对今天的现代世界和Microsoft Windows同样重要。)
作为一个更现代的例子,以下命令在现代的Microsoft Windows系统和许多Unix系统上都有效:
netstat -na | more
在现代版本中,您还可以在命令行上指定一个或多个文件名。如果这样做,将显示第一个文件,然后显示下一个文件。
more fileone.txt filetwo.txt
less
命令适用于MS-DOS、Microsoft Windows和其他操作系统,但该程序通常不会预装。因此,除非进行一些安装工作,否则无法使用less
命令。如果你进入一个之前没有去过的计算机实验室,很有可能会发现名为more
的命令已经准备就绪,而名为less
的命令通常只在Unix平台上可用。对于某些人来说,这可能是more
命令的优势,足以使他们更喜欢习惯于运行该命令。
less
允许您向上和向下导航。这是最重要的区别,但还有许多其他区别。 less
提供了比more
更多的功能。您可以在less
中按下H键,它将显示其简化的帮助信息,解释如何使用其各种交互功能。
最常用的是使用空格键或Page Down向下滚动一页文本,使用B键或Page Up向上滚动一页文本。所有四个箭头键都可以使用(尽管上下箭头键最常用)。
less
还在性能、资源使用和适应异常终端方面与more
不同。正如man less
所说:
我一直在比较`less`和传统的`more`实现方式。在Ubuntu中,`more`是这样一个实现方式。然而,如果你调用`less`但使用`more`的名字 - 例如,如果你创建一个指向`less`的symlink或hardlink并以此运行它 - 那么它的行为就会不同,外观上类似于`more`,但允许你在文档中同时向上和向下移动。Less是一个类似于more的程序(1),但它具有更多的功能。与文本编辑器vi(1)相比,Less不需要在开始之前读取整个输入文件,因此对于大型输入文件,它启动更快。Less使用termcap(或某些系统上的terminfo),因此可以在各种终端上运行。甚至还有对硬拷贝终端的有限支持。(在硬拷贝终端上,应该打印在屏幕顶部的行以插入符号为前缀。)
命令基于more和vi。命令可以由描述下面的十进制数N前导。如指示,一些命令使用了这个数字。
G
可以跳转到文件底部,然后按下 F
可以继续跟踪新内容(类似于 tail -f
)。按下 Ctrl-C 停止跟踪,并且您可以再次浏览文件。 - glenn jackmanH
键弹出的简化帮助也是可搜索的。 - BlueSkies
more是一个用于逐屏浏览文本的过滤器。这个版本尤为简单。用户应该意识到less(1)提供了更多(1)的仿真功能并且具有广泛的增强功能。
- schrodingerscatcuriosityless
给我比more
更多的选择?如果是这样的话,根本不需要考虑使用more
了吗? - BlueSkiesmost
!谢谢大家! - Henrique