19

たとえば、コマンドを実行したときにもパーセント記号を表示することを目指しています

man emacs

これを実行すると、たとえば「バイト3300」が得られます。

Alexの答えは、次の方法で別のシェル関数を作成する必要があることを示唆しています。

man "$1"| col -b > /tmp/manual
less /tmp/manual

ここで、$1は最初のパラメーターを指します。


新しい問題はスレッドにあります。核心の動きをしてくれたYuliyに感謝します!

4

6 に答える 6

28

解決

Alex Marteilliの回答 と組み合わせた、手動ではないバージョンのknitatomsの回答 は、非常にうまく機能します。オプションをポケットベルオプションを介して渡します。+Ggless

たとえば、

man -P 'less -s -M +Gg' man

これは置くことによって永久に影響を受けることができます

export MANPAGER='less -s -M +Gg'

シェル構成ファイルの1つ(上記の構文はBashとZSH用です)。今、例えば、man manあなたが望むようにパーセンテージを表示します!

警告

変数にを入れないでください!たとえば、+GgLESS

export LESS='-M +Gg'

非常に大きなファイルを読み取るときに問題が発生します。例えば、

yes | LESS='-M +Gg' less

うまく機能しません...

説明

他の回答が説明しているように、問題はless、ファイルの長さがわかるまでファイルの何パーセントかがわからず、パイプから読み取るときにデフォルトでファイルの最後まで読み取られないことです。

OPTIONSセクションからman less

+      If  a command line option begins with +, the remainder of that
       option is taken to be an initial command to less.   For  exam‐
       ple, +G tells less to start at the end of the file rather than
       the beginning, and +/xyz tells it to start at the first occur‐
       rence of "xyz" in the file.  As a special case, +<number> acts
       like +<number>g; that is, it starts the display at the  speci‐
       fied  line  number (however, see the caveat under the "g" com‐
       mand above).  If the option starts with ++, the  initial  com‐
       mand  applies  to  every file being viewed, not just the first
       one.  The + command described previously may also be  used  to
       set (or change) an initial command for every file.

g「ファイルの先頭に戻る」という意味です。

からman man

-P pager, --pager=pager
       Specify which output pager to use.  By default, man uses pager
       -s.  This option overrides the $MANPAGER environment variable,
       which in turn overrides the $PAGER environment  variable.   It
       is not used in conjunction with -f or -k.

       The value may be a simple command name or a command with argu‐
       ments, and may use shell quoting (backslashes, single  quotes,
       or  double  quotes).  It may not use pipes to connect multiple
       commands; if you need that, use a wrapper  script,  which  may
       take  the file to display either as an argument or on standard
       input.
于 2013-11-09T02:09:08.100 に答える
14
export LESS="-m"

より一般的には、LESS環境変数には、実行時に明示的に渡すことができるコマンドラインフラグと同等のオプションが含まれる場合があります。lessここでは、-mより豊富にプロンプ​​トを表示するように指示するオプションです(要求したパーセンテージを含む)。それぞれを。で終了することにより、その単一の環境変数内で複数のオプションを渡すこともできます$。詳細については、lessのマンページを参照してください。

編集:もちろん、(ファイルで呼び出すのではなく、パイプで接続している場合など、使用量が少ない場合は)表示される合計サイズがわからない可能性があります。この場合、もちろん、%を表示することはできません。その場合、これまでに表示されたテキストの量など、ほとんど情報がないことを示すプロンプトが表示されます。たとえば、配管によってそのようにman使用しますか。less

したがって、man(ファイルを直接呼び出すときではなくless)%を表示する必要がある場合は、「代替ページャー」(環境変数またはコマンドラインのMANPAGERスイッチ)を使用する必要があります。これは、を保存する単純なスクリプトです。一時ファイルに出力し、後者で使用します。(さらに深くトリックなどをプレイしない限り、それは人間自身の「色付け」を失う可能性があります-同様に、そのような事前フォーマットされたページの「事前フォーマットページ」オプションを使用して、実行する一時ファイルに解凍することができます、など、しかし、これはやや複雑な「単純なスクリプト」になり始めています;-)。-Pmanmanlessmanless

于 2009-06-26T14:18:43.707 に答える
11

Linuxでは、マニュアルページの最後にShift+を付けて移動しG、次に。を付けて最初に戻りgます。(または、を使用して前の位置に戻ることができます'')。

それよりも少ないと、ファイルのどこまで進んでいるかのパーセンテージを表示するのに十分な情報があります。-M(長いプロンプトを表示するには、入力する必要がある場合があります。)

ちょっとしたハックですが、キーを2回押すだけです。これがOS/Xで機能するかどうかはわかりません。

于 2013-08-25T09:30:13.047 に答える
10

Alex Martelliの答えに追加するには:

コマンドラインパラメータを入力して(-を含む)、Enterキーを押すだけで、実行時にlessに渡すこともできることに注意してください。だからあなたはただタイプすることができます

-m<Enter>

実行中のlessに切り替えて、長いプロンプトを切り替えます。

これは、実行時に変更する必要のあるオプション、たとえば-S(行の折りたたみのオン/オフ)に特に役立ちます。

于 2009-06-26T14:36:07.620 に答える
3

ライブlessランタイムでは、を使用し-Mました。

これは、実行回数が少ないプロンプトで の「 -MEnter」です。:

非常に大きなバッファーでは、そのサイズを「発見」するために最後まで行かなければなりませんでした。Endと戻るHome


注:@sleskeの回答にコメントとして投稿したと思いますが、最後に思い出しますが、コメントは<kbd>Keyboard<kbd>タグをサポートしていません。

于 2015-07-13T06:35:32.793 に答える
1

私の環境にはこれがあります。<filename> - Lines X-Y of Z下部に印刷されるか、少なくともその情報の多くが印刷されます。

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'
于 2009-06-26T14:27:35.843 に答える