我曾经用来cat
查看文件。然后我了解到less
通常情况下更好,如果文件长于几十行,则必须这样做。
我的问题:是否有使用cat
代替的理由less
?在什么情况下cat
有更好的解决方案?
cat
将其输出传递到less
之后。
cat
将非常短的文件打印到控制台,这些文件中的/proc
和/sys
是非常好的候选文件。这样,我可以同时看到多个文件的内容。
我曾经用来cat
查看文件。然后我了解到less
通常情况下更好,如果文件长于几十行,则必须这样做。
我的问题:是否有使用cat
代替的理由less
?在什么情况下cat
有更好的解决方案?
cat
将其输出传递到less
之后。
cat
将非常短的文件打印到控制台,这些文件中的/proc
和/sys
是非常好的候选文件。这样,我可以同时看到多个文件的内容。
Answers:
我个人更喜欢view
静态内容或tail -f
动态内容。
但是,这不能回答您的问题。俗话说“少用为什么多用” ;-)
但是在某些情况下,我更喜欢猫而不是猫:我通常使用X11-windows。这些窗口有一个滚动缓冲区,可以将其设置为几百行。
做一个cat
-假设200行,然后将鼠标与滚动条一起使用比less
在这种情况下使用更舒适。
view
你的意思是通常的vim -R
,或者你有一个同名别的东西吗?
less +F
会做什么tail -f
。
view
这不是别名。这是一个链接(到vi
或vim
)。 vi
查看argv[0]
启动的时间(以查看调用该名称的名称),如果是view
或rview
,它将设置为只读模式(就像您键入了一样vim -R
)。
尽管这两个命令都允许您查看文件的内容,但是它们的原始用途却大不相同。
更少扩展更多功能。创建后者是为了一次查看一个文件的内容。less少了一些功能,例如向后移动和更好的内存管理(无需看到整个文件就可以看到第一行)。
cat连接文件并在标准输出上打印结果。如果仅提供一个文件,则将看到该文件的内容。当您提供多个文件时,它变得“强大”。一个很好的例子是split和cat 的组合。第一条命令将大文件分成小部分。然后,第二个将这些小部分连接到一个文件中。
回到您的问题,在要求完全读取(或串联)文件而无需交互的自治脚本中,cat是首选。在文件查看方面,我认为这更多是一个品味问题。
less
始终允许在文件中搜索,而cat
不允许。
我通常cat
在需要基于文件中的内容键入命令时使用。cat
这样比较方便,因为可以在访问shell提示时看到文件(如果很小)。它还允许管道衬里。
还有谁认为是暴力的唯一目的的人cat
是精读猫 enate文件。对于其他任何用途,都有more
(或less
)。
但是,这没有考虑到一个相当重要的事实:cat
少键入一个字符。我经常使用这些命令,以至于精打细算。
另一个原因是当您要创建文件时。我经常将网上的文本复制并粘贴到这样的文件中(显示命令提示符):
$ cat > filename
<Cmd-V>
<Ctrl-D>
$
也就是说,我打开一个文件filename
进行写访问,粘贴内容并按Ctrl- 关闭流D。无论是less
也more
能做到这一点,这是不是打开一个编辑器更快。
$<filename
(在$
提示符下)调用stdin连接到的$ PAGER filename
。这样输入的字符数甚至少于cat
。
pbpaste > filename
,并且我相信X具有类似的功能。我仍然cat
用于快速文件创建,只是不用于粘贴。
pbcopy
/ pbpaste
用于其他目的,我也从未想过。
q
退出less
:D
cat
可用于将多个二进制文件合并为一个大文件:
cat data.001 data.002 data.003 > bigdata.dat
我使用less -FX
,它的less
行为就像cat
可以在一个屏幕上显示文件时一样。从less(1)
联机帮助页:
-F or --quit-if-one-screen
Causes less to automatically exit if the entire file can be dis-
played on the first screen.
-X or --no-init
Disables sending the termcap initialization and deinitialization
strings to the terminal. This is sometimes desirable if the
deinitialization string does something unnecessary, like clear-
ing the screen.
特权升级可能会出现问题,因为在“较少”范围内,您可以按“ v”编辑文件或在“!” 发送一个shell命令。
您可能希望允许某些用户查看只能由超级用户读取的文件,但通常不允许那些用户编辑文件或使用超级用户特权。您可以通过编辑“ / etc / sudoers”以允许他们使用“ sudo / bin / cat / etc / importantfile”来实现。您不希望允许使用'sudo / usr / bin / less / etc / importantfile',因为它们可以使用'v'编辑文件或使用'!'。启动具有完全超级用户特权的shell。
当然,用户可以使用'sudo / bin / cat / etc / importantfile | 较少”,并且仍然使用“较少”,而没有安全隐患。
如果输出不是终端(tty),则“少”和“多”都将与“猫”完全一样工作,对于管道和文件,它们都将恢复为无分页。
我认为可以肯定地说,“ cat”始终存在于您将找到的任何Unix类型的系统中。任何系统上“更少”和/或“更多”的存在都是不可预测的。
因此,在脚本中,如果只需要非分页操作,则在Unix类型的系统上使用脚本的任何位置都一定会出现“ cat”。
more
会可用,因为它是由Single Unix Specification强制要求的。
less
或a more
,但是我认为一个人不能相信特定的一个,也不是一个“真实的”实现...通常一个别名是另一个,有时是是最小的轻量级版本。
通过grep配管猫非常有用:
cat <filename> | grep -i "string of interest"
grep
以文件名作为参数了,否则您可以使用重定向。管子很贵。
less
问题中的标题为“当您拥有时” ...
grep [search term] [filename]
因此,如果我使用的是终端历史记录,则编辑搜索词更加麻烦。通过管道传递给grep,搜索词是最后的选择,并且更易于编辑。
cat
:< [filename] grep [search term]
和来获得所需的订购< filename tail -n 1000 | grep pattern
。重定向几乎可以在命令行的任何地方进行。
less
并cat
解决不同的问题,它们在各自的问题领域中都比对方更好