f を使用して more pager で前方に移動する

f を使用して more pager で前方に移動する

これは、k 画面分のテキスト (デフォルトは 1) を前方にスキップするために使用される のマニュアル ページに記載されています。 を使用して非常に長いファイルを保存しmore、それをページごとに画面に表示していましたが、最初のページ自体を押すと、前方に移動するのではなく、表示してからファイルが閉じてプロンプトが戻ります。 を使用して移動しようとすると、期待どおりに正常に動作しています。ファイルの長さが十分に長いため、1 ページごとにスキップして前方に移動するはずです。なぜこのように異なる動作が表示されるのでしょうか。fcatmoref... skipping 29 linesspacebar

ここに画像の説明を入力してください

答え1

次の実験を試してみてください:

  • 25 行のターミナルを開きます。
  • 走るseq 1 1 100 > test_text
  • 走るmore test_text
  • 画面の最後から 1 行目を見てください。そこには と表示されています24
  • 押すfスキップページ。
  • 画面の最初の行を見てください。 と表示されます49

fテキストのページをスキップします。つまり、ファイルの最初の「ページ」が表示され、 を押すfと、3 ページ目が表示されます。

この時点で、もう一度押すと、ファイルの最後の 4 行がf表示されます。5ページ目を表示するのに十分な行数がないため、終了します。... skipping 24 linesmore

代わりにを使用してもう一度お試しくださいspacespaceページはスキップされません。すべてのページが表示されます。

編集

この回答はmore version 5.19 (Berkeley 6/29/88), which is currently in use in the Linux communityもっと男)。@Kusalananda が報告しているように、「実験」の結果はバージョン/ユニックスによって異なる場合があります。

lineとの違いrow of text on a terminal

多くの場合、これら 2 つの定義は互換性があります。この場合、これらを区別することが重要です。

  • 行は、テキスト ファイル内の改行 (文字\n) で終わる文字のシーケンスです。wc -lコマンドは、ファイル内の行数をカウントします。行の長さは、0 から無限までの任意の数値にすることができます。
  • 端末上のテキスト行は、端末上に表示される文字のシーケンスです。端末の幅と同じ固定長を持ちます。

私の最初の「実験」は単純すぎたため、すべての線が(間違いなく)列よりも短かったです。

ファイルでは、おそらく行が列よりはるかに長いでしょう。それを表示するには、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 つ。

    2 行目は 8 文字の長さです: 010+ スペース + XXYY.

    3 行目は 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あるプロンプトに戻ります。

関連情報