it-swarm-pt.tech

Existe uma maneira de atualizar dinamicamente o comando less?

Eu gosto do comando watch, mas ele possui suas limitações .

Estou curioso para saber se eu poderia imitar a funcionalidade de watch com less. Estou procurando principalmente a capacidade de rolar pelo meu diretório, pois ele é modificado dinamicamente por meio de um script em execução.

146
Zaid

Em less, você pode digitar F para continuar lendo no final de um arquivo (como tail -f); Você pode digitar :e e um nome de arquivo para exibir um arquivo diferente, mas, infelizmente, se você digitar o nome do arquivo atual, less não recarregará o arquivo. No entanto, há um truque para fazê-lo reler o arquivo atual, sugerido por sabgenton : type :e e insira o nome de um arquivo inexistente ; isso faz com que menos exiba uma mensagem de erro e recarregue o arquivo atual.

Se você está procurando uma alternativa para watch ls, aqui estão alguns:

  • Os gerenciadores de arquivos modernos (por exemplo, Nautilus, Thunar, Konqueror, Dolphin, Finder) atualizam as visualizações em tempo real.
  • O Emacs não possui atualização em tempo real, mas com auto-revert-mode, recarregará o arquivo ou diretório a cada 5 segundos (o atraso é configurável).
  • Embora o w3m seja principalmente um navegador da web, ele cria um diretório aceitável e um visualizador de arquivos de texto. Pressione R para recarregar o URL (local).
130

Shift+F tornará less semelhante a tailf. Ou seja, ele é atualizado se mais dados forem anexados ao arquivo.

68
balki

Basta digitar:

less +F filename

Isso emula pressionando "F" dentro do editor.

44
jhclark

man páginas podem ser muito informativas. Não se deixe intimidar por eles. Entre todo o resto, man less diz que você pode usar o comando R para:

   R      Repaint the screen, discarding any buffered input.  Useful if the file is changing while it is being viewed.

(Sei que essa pergunta tem mais de 6 anos, mas aparece nas pesquisas do Google, por isso não sou a única que clicou no link para chegar até aqui.)

23
destenson

A tecla "F" ao executar less fará um "follow" semelhante a tail -f, mas não tenho certeza se isso conseguirá o que você está procurando aqui.

5
Dave Jennings

Eu normalmente digito G para ajustar a saída de uma só vez. Acho especialmente útil em um sistema de arquivos de rede como o CIFS.

5
jorb

R para repintar nem sempre recarrega o arquivo.[1]

Uma solução alternativa que sempre recarrega o arquivo é pressionar hq, que abrirá a página de Ajuda e sairá. Ele tem um efeito colateral de forçar o arquivo a recarregar.


[1] Aqui estão alguns exemplos de situações que R fazem e não recarregam:

  • > e >> alterações: são recarregadas
  • sed -i, gEdit, TextEdit: NÃO seja recarregado
  • No Linux, vi muda: É recarregado
  • No Mac, vi muda: NÃO seja recarregado

Acredito que a diferença se resume a se o inode é alterado (você pode verificar com ls -i foo.txt). Se o inode mudar, R não funcionará.

3
wisbucky

Você pode usar o vim para ler o arquivo e adicionar o seguinte mapeamento ao seu .vimrc e você pode recarregar facilmente um arquivo com ,r:

let mapleader = ","
nnoremap <leader>r :edit <CR>

Observe que se você já editou o arquivo, o vim irá reclamar. Apenas mude para

let mapleader = ","
nnoremap <leader>r :edit! <CR>

Ignorar alterações.

1
puk

Você pode canalizar para tail -f em vez disso, resultaria em você seguindo a saída. Você estaria perdendo a capacidade de mover (rolar) através de sua saída.

0
Gert

Acabei de encontrar esta discussão como qualquer outra pessoa. Gostaria de adicionar a solução de quando você já está no final do arquivo, usar 'g' seguido de 'G' forçará uma atualização do arquivo.

Acabei criando um botão macro para isso no meu programa de terminal (SecureCRT). A macro é simplesmente 'gG'.

0
ZMitchell

Se você não tem aversão ao uso de um navegador, pode iniciar o servidor da web Algernon com este comando:

algernon -a -t /directory/name

Uma lista de arquivos será exibida e atualizada automaticamente em http: // localhost: 3000 /

0
Alexander