使用 f 在更多寻呼机中向前导航

使用 f 在更多寻呼机中向前导航

more它在手册页中给出,f用于向前跳过 k 屏文本(默认为 1)。我使用保存了一个非常长的文件cat,并用于more逐页在屏幕上显示它,但是当我f按第一页时它本身并没有向前导航,但它会显示... skipping 29 lines,然后文件关闭并返回提示。当我尝试使用spacebar它导航时,它按预期正常工作。由于文件长度足够长,每次应跳过一页向前导航。为什么它表现出如此不同的行为?

在此输入图像描述

答案1

尝试这个实验:

  • 打开一个 25 行的终端。
  • 跑步seq 1 1 100 > test_text
  • 跑步more test_text
  • 查看屏幕上最后一行的前一行。会说24
  • f跳过页面。
  • 查看屏幕上的第一行。会说49

f跳过一页文本。因此,您看到了文件的第一“页”,按下f,您看到了第三页。

此时,如果f再次按,您将看到... skipping 24 lines文件的最后 4 行。more将退出,因为没有足够的行来显示第五页。

请再次尝试使用spacespace不跳过页面。您将看到所有页面。

编辑

这个答案指的是more version 5.19 (Berkeley 6/29/88), which is currently in use in the Linux community(参见男人更多)。正如 @Kusalananda 报道的那样,“实验”的结果可能会因不同版本/unices而异。

linea和 a之间的区别row of text on a terminal

通常这两个定义是可以互换的。在这种情况下,区分它们很重要。

  • 行是文本文件中以换行符(字符)结尾的字符序列\nwc -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

相关内容