[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[Linux] more命令的使用方法,意想不到的用途【文件串联】

大家好。
我在系统解决方案部门工作,人们往往很难决定是购买新的还是二手的家用电器。

现在,说到Linux环境中查看文件的命令,有
“more” 这次我将解释一下

如果您不知道
“more”命令会想 “我用得不多”,或者“与其他命令相比,它不是那么好......”可能有很多。

在讲解more基本用法的我也会针对为什么使用率低、何时使用more

让我先声明一下结论:当使用规范而不是日常使用来连接文件时,它很有用。

测试环境

  • Linux环境
    “操作系统:Ubuntu 20.04.5 LTS(WSL2环境)”

・Shell:Bash
・将语言环境更改为日语

如何使用/操作more命令

more [选项] 文件名 *选项可省略

使用它时,只需指定文件名(相对或绝对路径也可以),就像一般的编辑器或查看器一样。

执行时,“将显示适合屏幕(控制台)尺寸的内容。”

more 和 less 是称为“寻呼机”的函数,它们以固定行数显示文件信息。

主要选项

+数字 从指定编号的行开始显示。
-l 显示忽略分页符。
更常见的是当有^L(换行)时停在下一行,但此功能被禁用。
-f 显示数据上的行数而不是屏幕上的行数。

如果有很长的一行,它会在屏幕上换行并一次显示一行,但屏幕上已换行的多行将同时显示为一行。

-s 将连续的空白行显示为一行。
-d 当操作过程中输入无效按键时,将显示有关操作方法的帮助文本,而不是蜂鸣声。
-数字 显示包含指定数字的行数。

* 使用 man 命令检查更确认的选项解释和实际行为。
仅列出常用选项。

运行时行为

■ 文件内容一次显示时是否适合屏幕

$ more testfile 测试文本 *仅包含一行“测试文本”的示例文件

如果行数适合控制台,则简单地按原样输出命令立即。

如果能在控制台显示出来,那和使用不带选项的cat命令没有什么区别。

■ 文件内容无法一次显示在屏幕上时(一般使用情况)

$ more testfile_long 1 2 3 4 5 6 7 8 9 10 --continued--(40%) *仅按从 1 开始的顺序列出数字的示例文件

如果行数不适合控制台的显示区域,则仅显示适合的行数。

more 是一个交互状态,其中上述状态正在运行并接受子命令。

在交互状态下,它的行为类似于 less 和 view。

Enter 逐行显示未显示的部分,Space 显示每个屏幕尺寸的下一行,但全部显示完毕后,返回到执行前显示“$”(提示符)的状态。

操作方法(主要交互命令)

“k”是任何十进制数。

例如,如果按“z”,显示将立即前进屏幕上的行数,但如果输入“1z”,则会“向前显示一行”。

哈,? 帮助功能。
显示子命令的列表和说明。
空间 显示 k 目的地。
默认值是当前屏幕行数。
z k 显示目的地。
默认值是当前屏幕行数。
该参数成为新的默认值。
返回(输入) k 显示目的地。默认值为 1。 该参数成为新的默认值。
s k 向前跳。 (这不是滚动,因此跳过目标是顶部。)
默认值为 1。
f 滚动屏幕 k 次。 (由于它是按屏幕显示的,因此所有显示都会改变。)
默认值为 1。
向后滚动屏幕 k 次。 (由于它是按屏幕显示的,因此所有显示都会改变。)
默认值为 1。
= 显示当前行号(line number)。
/图案 搜索第 k 次出现的正则表达式。
默认值为 1。
q 结束。

more 命令在现代“很难使用”

有一个误解,或者更确切地说是一个鲜为人知的事实,即可以使用更多来恢复显示。

目前,可以使用子命令“b”进行向后移动。 (提醒)

然而,在其实施后的时代,该规范是这样的:显示只能前进,不能倒退,所以信息和误解似乎仍然存在。

您还可以使用“/”进行搜索,所有必要的功能都可用。

...但是,其他规格存在一些问题。

烦恼

・“全部显示后操作结束”

查看完内容后,即使您尝试查看开头的内容,操作也会结束。

・“和猫没有什么不同,如果不能一次全部显示出来,就无法进行操作。”

当您想要在轻松显示的情况下进行搜索时,此规范会很不方便。

・“无法完整显示行号”

没有像“cat -n”或“less -N”那样并行显示行号的选项。

由于这些特征,我不得不说没有理由使用“more”作为您经常使用的命令。

我想这就是为什么人们普遍得出“少”或“观”会更好的结论。

提示:首先,“less”是一个后来的命令,是作为“more”的改进而创建的

“Less”是后来创建的目的是改进最初的“more”命令,该命令“只前进显示但不后退 。 (来自命令创建者的网站)

让我们看一下 less 手册页。

[说明]
less 是一个与 more (1) 类似的程序,但它 允许在文件内向后移动以及向前移动。

对于大型输入文件,Less 的启动速度也比 vi (1) 等文本编辑器更快,因为它不需要在启动时读取整个输入文件。
由于 less 使用 termcap(或某些系统上的 terminfo),因此它可以在许多终端上运行。
对硬拷贝终端的支持仍然有限。 (在硬拷贝终端上,应出现在屏幕顶部的行标有脱字符号 (^))

这些命令基于 more 和 vi。还有一些可以在十进制数后面使用的命令(在下面的说明中用 N 表示)。

`` less 是一个类似于 more(1) 的程序,但它 允许您在文件中向后和向前移动''

它清楚地说明了“向后移动”假设更多(无法向后移动)。

更多 (1978)

man:1978 年创建的命令 * 参见参考资料
less:1983 年创建的命令 * 参见参考资料

1978年,在Linux出现之前,UNIX时代,为了改善当时的现状,创建了“more”命令。

它是一个寻呼机(命令),已被包括 UNIX 在内的操作系统正式采用。

在这篇文章中,我在尊重背景和历史存在的同时,带着“少在现代非常方便和流行”的理解来写作。

more 命令的有用规范

“更多”有一些有趣的规范,而“更少”和“视图”则没有。

打开多个文件时,文件名也会输出到标准输出。

当您使用 less 或 view 打开多个文件时,显示屏幕将根据文件的不同而变化。

例如,让我们同时打开两个文件 testA.conf 和 testB.conf,其中包含从 1 到 10 的数字排列。

■ 在更少的时间内同时打开时

$ less testA.conf testB.conf 1 2 3 4 5 testA.conf (file 1 of 2) (END) - Next: testB.conf *显示在命令行部分

:n 移动到下一个文件

6 7 8 9 10 testB.conf (file 2 of 2) (END) *显示在命令行部分

Less 只是将信息打印到命令行。
*对于视图,格式是相同的,只是措辞不同。

■ 与多个同时打开时

$ 更多 testA.conf testB.conf :::::::::::::: testA.conf ::::::::::::::: 1 2 3 4 5 --续-- (下一个文件:testB.conf) *显示在命令行部分 

使用子命令(Enter 或 Space)前进显示。

:::::::::::::: testA.conf :::::::::::::: 1 2 3 4 5 ::::::::::::::: : testB.conf ::::::::::::::: 6 7 8 9 10

more 则输出内容中包含文件名,并且文件名的处理方式不同。

您可能想知道,“这有什么好处?”这个规范导致了下一个“用途”。

何时使用 more 命令

尽管这种情况通常不会发生,但在极少数情况下您希望将多个conf 文件合并为一个文件。

・出于管理、文档和存储的目的,我想保留一个可以一次搜索并且易于保存的单个文件,而不是单独的conf文件。

在我过去的经历中,上述情况我只遇到过一次。

这时候,上面的“更多”规格就大放异彩了。

■ 当与更多连接时

$ more testA.conf testB.conf > testA+C.conf $ cat testA+C.conf :::::::::::::: testA.conf :::::::::::: :: 1 2 3 4 5 ::::::::::::::: testB.conf ::::::::::::::: 6 7 8 9 10

由于文件名作为标准输出输出,因此您可以在连接时包含文件名。

相反,让我们使用 less 连接文件。

■ 当与 less 连接时

$ less testA.conf testB.conf > testA+C_less.conf $ cat testA+C_less.conf 1 2 3 4 5 6 7 8 9 10 

无法达到目的,因为“文件仅通过内容连接,因此您看不到文件连接的位置”。

结论:我通常不使用它,但是当您想要连接包含文件名的文件时它很有用。

总而言之,“少”就是日常使用方便、好用。

但是,当您想要连接包括文件名的文件时,“更多”是最好的选择。

相反,当不使用“更多”时

$ for file in testA.conf testB.conf; do echo "==== $file ===" >>合并.conf; cat $文件 >>合并.conf; 完成 $ cat合并.conf ==== testA.conf ==== 1 2 3 4 5 ==== testB.conf ==== 6 7 8 9 10

麻烦。我认为“更多”肯定比输入这个更容易。

尤其是与 find 结合使用时,“more”特别容易,所以我认为不使用它有任何意义。

最后

我写这个博客的原因是因为我过去很难连接包含文件名的文件。

当我能够使用 more 的规范完美地实现这一目标时,我印象非常深刻。
我记得学到了一个重要的教训:“如果您了解规范,有些事情就可以轻松解决。”

我希望这篇文章能为阅读它的人提供一些有用的知识。
感谢您阅读本文。

参考资料

man“更多”页面(更多版本5.19信息)
-man-db/focal,now 2.9.1-1 amd64

more 命令的早期历史 *开发者网站
https://danhalbert.org/more.html

Less *开发者网站
https://www.greenwoodsoftware.com/less/index.html

更多(1) - Arch 手册页
https://man.archlinux.org/man/more.1.en

如果您觉得这篇文章有帮助,请点赞!
3
加载中...
3 票,平均:1.00 / 13
2,755
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

里面

2022 年加入 Beyond 职业生涯 属于
系统解决方案部门
LPIC-3 我有 304 和 AWS SAA 我的
常规饮料只有三种选择:牛奶、可乐和红茶。