Como fazer Menos indicar a localização em porcentagem
-
20-08-2019 - |
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!
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 .
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:-...'