答案1
尝试这个实验:
- 打开一个 25 行的终端。
- 跑步
seq 1 1 100 > test_text
。 - 跑步
more test_text
。 - 查看屏幕上最后一行的前一行。会说
24
。 - 按f至跳过页面。
- 查看屏幕上的第一行。会说
49
。
f跳过一页文本。因此,您看到了文件的第一“页”,按下f,您看到了第三页。
此时,如果f再次按,您将看到... skipping 24 lines
文件的最后 4 行。more
将退出,因为没有足够的行来显示第五页。
请再次尝试使用space。space不跳过页面。您将看到所有页面。
编辑
这个答案指的是more version 5.19 (Berkeley 6/29/88), which is currently in use in the Linux community
(参见男人更多)。正如 @Kusalananda 报道的那样,“实验”的结果可能会因不同版本/unices而异。
line
a和 a之间的区别row of text on a terminal
通常这两个定义是可以互换的。在这种情况下,区分它们很重要。
- 行是文本文件中以换行符(字符)结尾的字符序列
\n
。wc -l
命令计算文件中的行数。线的长度可以是零到无穷大之间的任何数字。 - 一行文本(在终端上)是终端上显示的字符序列。它具有端子宽度的固定长度。
我的第一个“实验”太简单了,所有的行(非常肯定)都比行短。
在您的文件中,行可能比行长得多。要显示它们,more
请将每行排列为多行。
让我们尝试一个新的实验:
example
创建一个包含以下内容的文件:006 XX\n010 XXYYYY\n015 XXYYYYZZZZZ\n
这是一个 3 行文件。每行的长度依次为:6、10 和 15 个字符。不要忘记计算数字后面的空格。
跑步
wc -l example
。 3 是结果。在 8 列终端上,您应该看到类似的内容
006 XX 010 XXYY YY 015 XXYY YYZZZZZ
第一行是 8 个字符长度:
006
+ 一个空格 +XX
+ 2 个空格。第二行是 8 个字符长度:
010
+ 一个空格 +XXYY
。第三行是 8 个字符长度:
YY
+ 8 个空格。等等等等.
您的 3 行文本现在是 5 行文本。
的手册页more
说:
f Skip forward k screenfuls of text. Defaults to 1.
这意味着more
将跳过很多行文本来填充终端的所有行。
答案2
但它显示
...skipping 29 lines
然后文件关闭并返回提示
当您按下f
并到达文档末尾时就会发生这种情况。
例如:您有一个 40 行的文件,您执行more myfileof60lines.txt
,它会显示前 29 行,然后您按f
,因此它将跳过接下来的 29 行,但在此之前,它会到达文档的末尾。因此,您最终会看到,以及到达文档末尾时...skipping 29 lines
的正常行为,即返回提示符。more