35 年来,我一直在观察more
命令是这样工作的:当指定多个文件且没有任何选项时,它会显示标题和文件内容,如下所示(短文件最容易看到):
$ more file*
::::::::::::::
file1
::::::::::::::
one
/* you press the space bar to advance from this point */
::::::::::::::
file2
::::::::::::::
two
/* you don't press it here because it's already reached EOF */
$
以上是more
从Ubuntu 22.04 开始的util-linux
版本2.37.2
。对于 Ubuntu 22.10 上的新util-linux 2.38
功能,它会在每个文件头之前(显然在每个文件头之前::::::::::::::
)打印一个终端“换页”,并将所有先前的输出从屏幕上移开:对我来说,这违背了文本文件浏览器的目的。
同样对于more
2.38 版,现在显然必须通过输入进入下一个文件,:n
就像在vi
. 作为vi
用户,这对我来说有点自然,但也令人不安,因为过去可以单独使用空格键连续浏览所有文件。
more --help
一如既往地显示了一些控制分页的选项,但据我所知(至少在 Ubuntu 上编译)引入了表单馈送,但没有任何选项可以抑制它。
即使可以固定util-linux
版本2.37.2
,我也不认为这是可持续的,因为它还会停止开发 100 多个其他 Unix 命令,这些命令几十年来一直是标准词汇表的一部分。改变more
自 1980 年代以来工作方式的影响影响深远,因此必须考虑:即恢复原始行为的一些方法。
这很可能是由新引入的选项引起的
显然,这样做是为了符合 POSIX,即防止在没有 .EOF 的情况下退出
-e
。然而,因为很多人已经抱怨这破坏了向后兼容性(并且为了修复它,他们必须这样做
alias more='more -e'
),另一个变化正在酝酿中——如果没有设置环境变量,它将恢复旧的行为并默认启用或者如果没有在终端上执行-e
POSIXLY_CORRECT
。所以可能在下一个版本中,您已经习惯的行为将会恢复(只要POSIXLY_CORRECT
未设置)。