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?

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.


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


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).


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.