当您拥有“less”时,是否有理由使用“cat”?

Ram*_*hum 69 less cat

我以前用来cat查看文件。然后我了解到这less通常更好,如果文件长于几十行,这是必须的。

我的问题:有没有理由使用cat而不是less?有没有cat更好的解决方案?

nro*_*ans 101

尽管这两个命令都允许您查看文件的内容,但它们的原始用途却大不相同。

less 扩展了more的功能。创建后者是为了一次一屏查看文件的内容。less 添加了诸如向后移动和更好的内存管理等功能(无需在能够看到第一行之前读取整个文件)。

cat 连接文件并在标准输出上打印结果。如果您只提供一个文件,您将看到该文件的内容。当您提供多个文件时,它变得“强大”。一个很好的例子是split和 cat的组合。第一个命令将大文件分成小部分。然后第二个将把小部分连接成一个文件。

回到您的问题,在需要完全读取(或连接)文件而无需交互的自治脚本中,更喜欢 cat 。在文件查看方面,我认为这更多是一个品味问题。

  • `less` 总是允许在文件中搜索,而 `cat` 则不允许。 (6认同)

Ami*_*hum 25

我通常cat在需要根据文件中的内容键入命令时使用。cat更方便,因为您可以在访问 shell 提示符时查看文件(如果它很小)。它还允许管道内衬。

  • 对于一个文件,重定向标准输入也是可能的,而且通常更可取。 (3认同)

Nil*_*ils 25

我个人更喜欢view静态内容或tail -f动态内容。

但是,这并不能回答您的问题。有句话说“如果你拥有的更少,为什么要使用更多”;-)

但在某些情况下,我更喜欢 cat 而不是 less:我通常使用 X11-windows。这些窗口有一个滚动缓冲区,可以设置为几百行。

做一个catfor - 假设 200 行,然后使用带有滚动条的鼠标对我来说比less在这些情况下使用更舒服。

  • 您所说的“view”是指通常的“vim -R”,或者您还有其他同名的东西? (4认同)
  • `less +F` 做 `tail -f` 做的事。 (2认同)
  • 实际上,`view` 不是别名;它是一个链接(到 `vi` 或 `vim`)。`vi` 在启动时查看 `argv[0]`(以查看它被调用的名称),如果是 `view` 或 `rview`,它会设置只读模式(就像你输入了 ` vim -R`)。 (2认同)

jas*_*yan 18

有没有猫是更好的解决方案的情况?

当您处理多个文件并希望连接它们时。

从手册页:

cat f - g
        Output f's contents, then standard input, then g's contents.
Run Code Online (Sandbox Code Playgroud)


Kon*_*lph 17

还有谁认为是暴力的唯一目的的人cat是骗子enate文件。对于其他所有用途,都有more(或less)。

但这并没有考虑到一个非常重要的事实:cat要输入的字符少了一个。我经常使用这些命令,少一个字符是很容易的。

另一个原因是当您要创建文件时。我经常将网络中的文本复制并粘贴到这样的文件中(显示命令提示符):

$ cat > filename
<Cmd-V>
<Ctrl-D>
$
Run Code Online (Sandbox Code Playgroud)

也就是说,我打开一个文件filename进行写访问,粘贴内容并按Ctrl-关闭流D。既less不能也more不能这样做,而且比打开编辑器要快。

  • 如果你使用 zsh 作为 shell,你可以设置它以便 `$&lt;filename`(其中 `$` 是提示符)调用 $PAGER,stdin 连接到 `filename`。这比`cat`要输入的字符更少。 (5认同)
  • 在 Mac OS X 上,我使用 `pbpaste &gt; filename`,我相信 X 有类似的东西。我仍然使用 `cat` 来快速创建文件,而不是用于粘贴。 (2认同)

小智 10

有时你不想要分页,less只想要完整的文件,所以你会使用cat.