笑话

笑话

下面两个命令有什么区别?

more file-name
less file-name

答案1

more是最古老的,less是一种进步,most是对此的改进。

简短比较:

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

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

答案2

笑话

有一个老笑话,由三个词组成:“少即是多”。(这是 guillermo chamorro 对这个问题的第二条评论中提到的“双关语”。)人们如此喜欢这个笑话的原因之一可能是,这句话可以用三种不同的方式来理解,因此无法明确到底是哪种方式。然而,这三种方式都是准确的,至少在某些操作系统上是如此。(第 2 点可能不适用于 Ubuntu,我确实知道这是一个以 Ubuntu 为中心的网站。然而,Ubuntu 源自 Debian,它有着从其他 Unix 和 Unix-ish 系统汲取思想并与之共享的悠久历史。因此,了解其他操作系统的功能并不是一件坏事。)

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

为了澄清这些:

  1. 有一个名为 的变量LESS_IS_MORE
    • less命令支持名为 的 shell/环境变量LESS_IS_MORE。默认情况下,该less命令的行为与旧命令非常相似,但如果该命令发现此变量的值设置为 1(数字一),则该命令将提供较少的功能,以增加与名为 的旧寻呼机命令的兼容性。morelesslessmore
    • 这不是 Ubuntu 独有的,并且支持less所有平台。less(1) (less的“手册页”),标题为“兼容性more”的部分
  2. 作为 less 本质的不争事实(在某些操作系统上)
    • less命令支持许多类 Unix 环境中的程序使用的行为,即检查其以哪个文件名运行的行为。如果运行该less程序的命令行以文件名开头more,则命名的程序less将执行的操作是提高与旧more命令的兼容性,类似于LESS_IS_MORE运行该命令时的操作。
    • 一些操作系统实际上依赖于此功能,而没有费心包含名为的单独程序more。好吧,要清楚的是,有一个可用的命令名为more(强烈建议使用,以兼容脚本和一些相当常见的用户行为),但lessmore命令都是指向同一可执行代码流的“硬链接”。因此,操作系统在运行名为的命令时运行的可执行代码less实际上与操作系统在运行名为 的命令时运行的可执行代码相同more。(这甚至不仅仅是运行代码的相同副本的情况。从字面上看,相同的位是通过从数据存储设备的完全相同的位置读取来加载的,因此它实际上是相同的代码。)因此,陈述 是lessmore字面上的(事实的、非主观的、可证明的)事实,因为这些实际上是完全相同的程序,因为这两个程序实际上都使用完全相同的可执行代码。(但是,根据用于运行程序的命令,程序的行为可能会有所不同。)
    • 如果有人说“确实lessmore”,那么这个人可能想澄清命令lessmore命令共享相同的可执行位。这可以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可用,而该命令less通常仅在 Unix 平台上可用。对于某些人来说,这可能是该命令的一个优势,more这足以让他们更愿意习惯运行该命令。

杂项

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

答案3

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

这是最重要的区别,但还有许多其他区别。less提供了除 之外的众多功能more。您可以按下Hless它会显示其简略帮助,解释如何使用其各种交互功能。

最常见的是SpacebarPage Down向下移动一屏文本,BPage Up向上移动一屏文本。所有四个箭头键都可以使用(尽管向上和向下箭头最常用)。

lessmore在性能、资源使用和适应不寻常的终端方面也有所不同。man less说:

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

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

我一直less在与 的传统实现进行比较more。在 Ubuntu 中,more就是这样的实现。但是,如果您less以名称调用 但more—— 如果您创建符号链接或硬链接以less调用more并运行它,则会发生这种情况 —— 那么它的行为会有所不同,more在外观上相似,但允许您在文档中上下移动。

相关内容