Pergunta

Agora pretendemos mostrar o sinal de porcentagem também quando você executar, por exemplo, o comando

man emacs

Se você executá-lo, você começa 'byte 3300', por exemplo.

de Alex resposta sugere me que precisamos fazer uma função shell separado por

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

onde $ 1 refere-se ao primeiro parâmetro.


O novo problema está no fio . Graças ao Yuliy para o movimento crux!

Foi útil?

Solução

Solução

Uma versão menos manual dos knitatoms' resposta combinado com o Alex Marteilli resposta funciona muito bem:. passam a opção +Gg para less através da sua opção pager

Por exemplo, tente

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

Isto pode ser efectuado de forma permanente, colocando

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

em um dos seus arquivos de configuração de shell (acima sintaxe é para Bash e ZSH). Agora, por exemplo, man man exibe a porcentagem como você queria!

Aviso

Você deve não colocar o +Gg na variável LESS! Por exemplo, fazendo

export LESS='-M +Gg'

causará problemas ao ler arquivos muito grandes. Por exemplo,

yes | LESS='-M +Gg' less

não funciona muito bem ...

Explicação

Como outras respostas já expliquei, o problema é que less não posso dizer que por cento para o arquivo que você está até que ele sabe quanto tempo o arquivo é, e não ler até o final do arquivo por padrão quando a leitura a partir de um tubo.

Na seção OPTIONS de 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.

Os meios g "retorno ao início do arquivo".

A partir do 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.

Outras dicas

export LESS="-m"

De modo mais geral, a variável de ambiente LESS pode conter opções equivalentes a sinalizadores de linha de comando que você pode explicitamente passar ao executar less - aqui, a opção -m que diz-lhe para pronta mais ricamente (incluindo a percentagem, como você pediu). Você poderia passar também mais de uma opção dentro dessa variável de ambiente único terminando cada um com uma $. Para mais informações, consulte manpage .

de menos

Editar : é claro que é possível (dependendo de como você está usando menos, por exemplo, se você estiver canalizando a ele, em vez de chamá-lo em um arquivo) que menos não saber o tamanho total será exibindo, caso em que é claro que não pode mostrar a% - nesse caso, solicitará com o que pouco de informação que tem, por exemplo, quanto texto demonstrado pelo tão longe. Por exemplo, man faz uso less dessa forma, por uma tubagem.

Assim, se sua necessidade específica é ver a% em man (em vez de ao chamar less diretamente em um arquivo), você precisará usar um "pager alternativo" (variável MANPAGER ambiente ou switch -P na linha de comando man) que é um script simples que salva a saída do man para um arquivo temporário e, em seguida, usa less no último. (Isso pode perder próprio "colorização" do homem, a menos que jogar ainda mais e truques mais profundas, etc, etc - da mesma forma que você pode usar a opção "preformat páginas" de man e descompactar tal uma página pré-formatada para um arquivo temporário no qual executar less, etc, mas isso está começando a se tornar um "script simples" um pouco complexa; -).

No Linux eu só ir para o final da página homem com Mudança + G , em seguida, voltar ao início com g . (Ou você pode voltar à sua posição anterior, com ' ' ).

Menos tem informações suficientes para exibir a porcentagem de quão longe através do arquivo que você está. (Talvez seja necessário digitar -M para obter a longo pronta.)

É um pouco de um truque, mas apenas duas teclas pressionadas. Não tenho certeza se isso funciona no OS / X.

Para adicionar a resposta Alex Martelli':

Note que você também pode passar qualquer parâmetro de linha de comando para menos em tempo de execução, apenas digitando-lo (incluindo o -), seguido pela tecla enter. Então você pode simplesmente digitar

-m<Enter>

em uma marcha diminuída para alternar a longa rápida.

Isto é especialmente útil para as opções que precisam ser alterados em tempo de execução, por exemplo, -S (linha de dobragem de ligar / desligar).

Com um tempo de execução less ao vivo I -M usado.

que é "-M Enter " no : tempo com menos execução.

Com muito grandes buffers Eu também tinha que ir até o fim para "descobrir" o seu tamanho. Fim e voltar Home .


Nota: eu teria postado como um comentário à resposta @sleske 's, mas passado eu recordação , os comentários não suportam marcas <kbd>Keyboard<kbd>.

Eu tenho isso em meu ambiente. Ele vai imprimir <filename> - Lines X-Y of Z na parte inferior, ou pelo menos tanto quanto dessa informação, pois tem.

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top