Ubuntu

使用 f 在更多尋呼機中向前導航

  • January 23, 2019

它在手冊頁中給出moref用於向前跳過 k 屏文本(預設為 1)。我保存了一個很長的文件,cat並使用more它在螢幕上逐頁顯示,但是當我按下f第一頁時本身,它沒有向前導航,但它顯示... skipping 29 lines,然後文件關閉並提示返回。當我嘗試導航時,spacebar它按預期正常工作。由於文件長度足夠長,它應該通過每次跳過一頁來向前導航。為什麼它表現出如此不同的行為?

在此處輸入圖像描述

試試這個實驗:

  • 打開一個有 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(見man more)。正如@Kusalananda 報告的那樣,“實驗”的結果可能因不同的版本/版本而異。

linea和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將跳過這麼多行文本來填充終端的所有行。

引用自:https://unix.stackexchange.com/questions/496005