Rin*_*ind 46

more是最古老的,less是一种改进,并且most是对它的改进。

简短比较:

  • more:向前导航和有限的向后导航。
  • less:向前和向后导航,也有搜索选项。您可以立即转到文件的开头和结尾。另外,您可以切换到编辑器(例如在 vi 或 vim 中打开文件)。当文件很大时,它明显比编辑器快。
  • most:具有的所有功能more,并less但你还可以打开多个文件,在当你有多个文件打开,一时间接近1文件允许锁定和打开的窗口中滚动,并允许打开的窗口的拆分。

所有 3 个都使用h来让您查看命令的键绑定。

  • 另一个不错的选择:[`bat`](https://github.com/sharkdp/bat),自 Ubuntu Eoan 19.10 或 Debian 不稳定 sid 起可在官方存储库中使用。 (3认同)
  • @JörgWMittag 它必须与 Linux(完整的操作系统,而不是内核)搭配使用,因为 Linux 具有这些命令。否则就像有人说“我讨厌 Windows 因为驱动器号”。你说“我看不出驱动器号与 Windows 有什么关系。驱动器号来自 CP/M。” - 没有意义,是吗? (3认同)
  • @user253751:有些 Linux 操作系统不使用 GNU,因此没有 `less`。有些 Linux 操作系统与 Unix 不兼容,因此没有“更多”。我使用过的 Linux 操作系统都没有默认安装“most”。有些甚至根本没有。相反,所有非 Linux Unices 都有 `more`。有些 GNU 操作系统具有 `less` 但不使用 Linux。有些操作系统拥有“大多数”但不使用 Linux。比如我用的macOS,和Linux没有关系,三个我都有。 (2认同)

Eli*_*gan 18

less 让您可以向上和向下导航。

这是最重要的区别,但还有许多其他区别。less提供了许多超出more. 您可以按Hless,它会告诉你它的缩写帮助,解释如何使用它的各种互动功能。

最常见的是SpacebarPage Down走下来的文字一个屏幕和BPage Up去备份文本的一个画面。所有四个箭头键都有效(尽管向上和向下箭头是最常用的)。

less也不同于more在某些方面,涉及到性能,资源占用和容纳不同寻常的终端。正如man less所说:

Less是一个类似于more (1) 的程序,但它有更多的功能。Less在开始之前不必读取整个输入文件,因此对于大输入文件,它比vi (1)等文本编辑器启动得更快。Less 使用 termcap(或某些系统上的 terminfo),因此它可以在各种终端上运行。对硬拷贝终端的支持甚至有限。(在硬拷贝终端上,应打印在屏幕顶部的行以插入符号为前缀。)

命令基于morevi。命令前面可能有一个十进制数,在下面的描述中称为 N。该数字由某些命令使用,如所示。

我一直比较less于传统的实现more。在Ubuntu中,more就是这样一个实现。但是,如果你调用less但作为名称——more就像你创建一个符号链接或硬链接来less调用more和运行那样——那么它的行为就会不同,在more美学上类似于但允许你在文档中向上和向下移动。

  • 使用 less 也很方便:`G` 跳转到文件底部,然后 `F` 跟随新内容(如 `tail -f`)。Ctrl-C 停止跟随,您可以再次浏览文件。 (4认同)

TOO*_*GAM 17

笑话

有一个古老的笑话由三个词组成:“少即是多”。(这是 guillermo chamorro 对这个问题的第二个评论所提到的“双关语”。)也许人们如此喜欢这个笑话的一个原因是可以用三种不同的方式来理解这个陈述,因此没有任何关于哪种方式的意思。然而,这三种方式都是准确的,至少在某些操作系统上是这样。(第 2 点可能不适用于 Ubuntu,我确实知道这是一个以 Ubuntu 为中心的站点。然而,Ubuntu 源自 Debian Wish 有着悠久的历史,它的思想被其他 Unix 和 Unix 借鉴并共享—— ish 系统。因此,了解其他操作系统的功能并不是一件坏事。)

  1. 有一个名为 LESS_IS_MORE 的变量
  2. 作为less性质的一个不争的事实(在某些操作系统上)
  3. 作为简单的英文语句

澄清这些:

  1. 有一个名为 的变量LESS_IS_MORE
    • less命令支持名为LESS_IS_MORE. 默认情况下,该less命令的行为与较旧的more命令非常相似,但是如果该less命令看到此变量设置为 1(第一个)的值,则该less命令将提供较少的功能,以尝试增加它的兼容性与名为 的旧寻呼机命令一起使用more
    • 这不是特定less于Ubuntu 的,并且在所有平台上都受支持。这在less(1) (less的“手册页”)中more提到,标题为“与 的兼容性
  2. 作为less性质的一个不争的事实(在某些操作系统上)
    • less命令支持许多程序在类 Unix 环境中使用的行为,即检查它以哪个文件名运行的行为。如果运行该less程序的命令行以 文件名开头more,则该程序的less作用是提高与旧more命令的兼容性,类似于LESS_IS_MORE运行该命令时的情况。
    • 一些操作系统实际上依赖于这个功能,并没有费心去包含一个名为more. 好吧,要清楚的是,有一个名为的可用命令more(强烈建议与脚本和一些非常常见的用户行为兼容),但lessmore命令都是到同一位可执行代码位流的“硬链接”。所以,这就运行名为命令时运行操作系统的可执行代码less实际上其运行的名为命令时,操作系统运行相同的可执行代码more. (这甚至不仅仅是运行代码的相同副本的情况。从字面上看,相同的位是通过从数据存储设备的完全相同的位置读取来加载的,因此它实际上是相同的代码得到使用。)因此,该声明lessmore指文字(事实,不固执己见,可证明的)真理,因为这些都是从字面上完全相同的程序,因为这两个程序是从字面上使用完全相同的可执行代码。(但是,根据用于运行程序的命令,程序的行为可能会有所不同。)
    • 如果有人说“lessmore,字面意思。” 那么这个人可能试图澄清less命令和more命令共享相同的可执行位。这是可以做到的“硬链接”(使用实施ln)最有效的,但也可以使用一个“符号链接”(实现使用实施ln -s),或通过具有可执行文件的比特的复印件(可以很容易地实现使用cp)。
  3. 作为简单的英文语句
    • 这是一个自以为是的声明(很多人都同意),说明该less命令具有更多不错的功能,因此该less命令比旧的,更传统的寻呼命令(恰好发生在被命名more)。由于使用命名命令的体验less是一种明显更好的体验,人们认为将这种更好的体验描述为“更多!”是合适的。

在整个答案中,我确实努力使所有对该命令的引用都被明显标记。然而,体验这个笑话的最佳方式是口头上的,因为这会增加一些歧义。口头上说

  • “少即是多”
  • 或“less more
  • 或“less更多!”

可能都以完全相同的方式发音,所以如果语气没有清楚地表明对任何特定单词的任何特别强调,那么仅仅听到这三个单词并不能真正表明准确的陈述(如果有的话)旨在比其他陈述更多地被引用。

撇开所有幽默不谈,这也可以用来衡量某人对这个命令 Unix 程序的熟悉程度。许多人在使用命令之前并没有阅读每个命令的“手册页”(尤其是在学习如何在他们使用的第一个 Unix 平台上有效使用一些最基本的命令时),因此很多人最终学习了当这个笑话被完全解释时,LESS_IS_MORE 变量。因此,口头说这个笑话可以检查收件人似乎有多少认可或困惑。

(如果这个人看起来有点困惑,这可能表明这是一个很好的时间来帮助教育这个人关于这个陈述的多个方面。根据第一点或第二点,他们最终知道多一点关于通用命令的行为。如果他们记得这个笑话,那么他们可以记住最后一点,这有助于他们记住less许多人更喜欢的命令的存在,并记住哪个命令通常提供在许多平台上都有更好的体验。)

DOS兼容性

more”命令有一个方面值得一提,这可能使它看起来比“ less”命令更好(至少在某些人看来)。

非常非常多的 Unix(-ish) 系统都带有一个名为more的命令和一个名为 的命令less,内置的,作为操作系统的一部分安装的。(在命令的most基础上进一步构建的名为的less命令被其他答案之一提到,但预安装在少得多的系统上。因此,需要先安装程序。)但是,该more命令也可能是预安装在大量计算机上,包括通常不被认为主要围绕 Unix 兼容性设计的计算机。

在 MS-DOS 和类似/兼容的平台中,包括现代 Microsoft Windows,以下内容将与 Unix 完全一样:

  • more < filename.txt

您也可以通过管道输入more. 演示这一点的典型方法是显示一个显示文本文件内容的命令。在 Unix 中,这通常使用cat. MS-DOS 没有cat命令,而是使用type. (Unix 有一个单独的type命令可以做一些完全不同的事情。)所以:

  • Unix: 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可能会很容易使用 named 命令,而该命令less通常只能在 Unix 平台上使用。对于某些人来说,这可能是命名命令的一个优势,more这足以让他们更喜欢习惯运行该命令。

杂项

我不会尝试在这里提供完整的答案,因为这样做与其他答案是多余的。相反,我决定只包含我在其他地方没有看到的信息。因此,此答案旨在补充其他一些答案。我希望您喜欢这里提供的信息,但一定要查看其他答案。两个预先存在的答案(在此之前发布)也提供了额外的信息。