似乎目的cat
是连接几个文件。但是,许多人仍然使用cat
代替less
(或类似的程序more
)来显示文件。例如,请参阅GNU m4 手册和答案“如何在命令行上显示文本文件的内容? ”。
手册页:少
-F 或 --quit-if-one-screen
less
如果整个文件可以显示在第一个屏幕上,则 导致自动退出。-X 或 --no-init
禁止将 termcap 初始化和取消初始化字符串发送到终端。如果取消初始化字符串做了一些不必要的事情,比如清除屏幕,这有时是可取的。
如今,cat
用于显示或查看文件是一个好习惯吗?为什么使用cat
查看文件?
这让我想到了Useless Use Of Cat。
注意:这个问题是不是之间的差异less
和more
。此外,它涉及先前创建的文件的可视化。
根据答案和评论,它似乎cat
超出了它的用途,因为它比寻呼机更容易使用(例如more
,less
...)。有些人认为这是一个无关紧要的事实(或无用),但经验表明,与 shell 有关的各种微妙之处可能会产生实际后果:使用 shell 循环处理文本 文件,使用不带引号的变量......
负面后果的强度各不相同。例如,cat foo bar | less
有效因为用户连接了两个文件但cat foo | less
无效。本着同样的精神,cat
似乎在“管道”中是必需的,尽管似乎寻呼机也less
可以在管道中工作(注意:less
并不适合所有有关显示的情况,例如读取命名管道:tail 或 cat?)。
另请参阅: 如何使用“或”选项对文件进行分类
我将假设问题中的“许多人”是指在诸如本网站之类的网站上编写教程、手册或答案的人。
在文本文档中编写终端命令时,该cat
命令通常用于显示文件的内容。
这方面的一个例子:
$ cat script.sh
#!/bin/sh
echo 'hello'
Run Code Online (Sandbox Code Playgroud)
$ chmod +x script.sh
Run Code Online (Sandbox Code Playgroud)
$ ./script.sh
hello
Run Code Online (Sandbox Code Playgroud)
在这里,我展示了我有一个名为 的文件script.sh
,它的内容是什么,我让它可执行,我正在运行它,以及它的结果是什么。
使用cat
这个例子只是“显示所有一个人的卡”,即明确显示所有先决条件的例子(和做它作为一个终端会话的文本表示的一部分)的方式。
less
和其他基于屏幕的寻呼机,取决于它们的使用方式,不一定会在终端中提供该输出。所以如果我写
$ less script.sh
#!/bin/sh
echo 'hello'
Run Code Online (Sandbox Code Playgroud)
并且用户自己尝试了它,他们可能想知道为什么脚本的文本在他们的终端中显示不同,然后在关闭less
寻呼机后从终端中消失(如果这是他们配置寻呼机的方式),或者他们是否less
是从不同less
的答案中使用(或教程或任何可能),或者如果他们在做别的事情是错误的。允许这种思路的可能性对用户来说是适得其反和具有破坏性的。
利用cat
显示在终端文本为例,当是好事,因为它给了再现的一个相当简单的方法精确相同的结果,在给定的文本。对于较大的文件,它可以是更好地展示分开的文件,然后集中在如何该文件用于写入终端命令作为文本时。
如果您更喜欢使用less
、more
、most
、view
、sublime
或其他一些寻呼机或程序来查看文件,那完全没问题。继续这样做。但是,如果您想提供描述终端中某些工作流程的可重现文本,您还必须警告用户,根据使用的寻呼机,他们阅读的内容和他们在自己的终端中看到的内容可能有所不同以及它是如何配置的。
less
是一个非标准的 GNU 实用程序。
Run Code Online (Sandbox Code Playgroud)The Open Group Base Specifications Issue 7, 2018 edition IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008) Copyright © 2001-2018 IEEE and The Open Group
姓名
cat - 连接并打印文件
概要
Run Code Online (Sandbox Code Playgroud)cat [-u] [file...]
...
cat
更有可能存在并具有一致的行为。
归档时间: |
|
查看次数: |
4636 次 |
最近记录: |