Rolagem horizontal em incrementos menores com menos -S

25

Estou usando lesspara analisar logs de acesso HTTP. Eu quero ver tudo ordenadamente em linhas únicas, então estou usando -S.

O problema que tenho é que o primeiro terço da minha janela de terminal é ocupado com metadados dos quais não me importo. Quando uso minhas teclas de direção para rolar para a direita, percebo que elas rolam além do início das informações de que me importo!

Eu poderia simplesmente excluir o início de cada linha, mas não sei se preciso desses dados no futuro e prefiro não precisar manter arquivos separados ou executar um script cada vez que desejar visualizar alguns logs.

Exemplo

Está linha:

access.log00002: 10.0.0.0 - USER_X [07 / Nov / 2013: 16: 50: 50 +0000] "GET / some / long / URL"

Rolaria para: ng/URL"

Questão

Existe uma maneira de rolar em incrementos menores, por caractere ou por palavra?

Mike
fonte

Respostas:

19

Os únicos comandos de rolagem horizontal rolam pela metade da tela, mas você pode passar um argumento numérico para especificar o número de caracteres, por exemplo, digitando 4 Rightrolagens para a direita com 4 caracteres. Menos realmente não tem uma noção de "linha atual" e não divide uma linha em palavras; portanto, não há como rolar uma palavra de cada vez.

Você pode definir um comando que role por um número fixo de caracteres. Por exemplo, se você quiser Shift+ Lefte Shift+ Rightrolar por 4 caracteres por vez:

  1. Determine as seqüências de controle que o seu terminal envia para essas combinações de teclas. Terminais enviar uma sequência de bytes que começam com a fuga (que pode ser escrita \e, \033, ^[personagem em vários contextos) para teclas de função e keychords. Pressione Ctrl+ V Shift+ Leftno prompt do shell: ele insere o caractere de escape literalmente (você verá ^[na tela), em vez de ser processado pelo seu shell, e insere o restante da sequência de escape. Uma configuração comum tem Shift+ Lefte Shift+ Rightsend \eO2De \eO2Crespectivamente.

  2. Crie um arquivo chamado ~/.lesskeye adicione as seguintes linhas (ajuste se o seu terminal envia sequências de escape diferentes):

    #command
    \eO2D noaction 4\e(
    \eO2c noaction 4\e)
    

    Em seguida lesskey, execute , que converte o legível por humanos ~/.lesskeyem um arquivo binário ~/.lessque lesslê quando é iniciado.

Gilles 'SO- parar de ser mau'
fonte
19

Você pode usar a opção "- #" para definir o número de colunas para rolagem horizontal.

Na página do manual:

- # ou --shift
Especifica o número padrão de posições para rolar horizontalmente nos comandos RIGHTARROW e LEFTARROW. Se o número especificado for zero, ele definirá o número padrão de posições para metade da largura da tela.

Exemplo (defina a rolagem horizontal para 10 colunas):

less -S - # 10 meu_arquivo

Rikard
fonte
Existe a possibilidade de adicionar essa opção a algum arquivo de configuração para que eu não precise passar pela opção nº 1 toda vez que digito o comando?
Trismegistos
11
@Trismegistos Sim, você pode definir a variável de ambiente no seu ~/.bashrccomexport LESS="-# 1"
wisbucky
Você também pode definir uma porcentagem da largura da tela se o número começar com um ponto decimal. Por exemplo, -# .25rolaria 1/4 da largura da tela.
wisbucky 9/04
2

Uma alternativa é usar o mostpager.

Em most, no-wrap ( -S) é o padrão eRight rola uma coluna para a direita, em vez de meia tela. Use >ou Tabpara rolar mais rápido.

Outra alternativa é o w3mpager (também um dos melhores navegadores de terminal), onde você pode usar <, >também, e ,, .por mais fina-grão rolagem (mesmas teclas no teclado QWERTY).

Stéphane Chazelas
fonte
Isso não é verdade. Mais está agrupando como padrão e não há opção -S.
Trismegistos
11
@Trismegistos, não estou falando more(para as quais existem dezenas de implementações), mas sobre most(por John E. Davis, não estou ciente de nenhuma outra implementação).
Stéphane Chazelas