it-swarm.it

C'è un modo per aggiornare dinamicamente il comando less?

Mi piace il comando watch, ma ha i suoi limiti .

Sono curioso di sapere se potrei imitare la funzionalità di watch con less. Sto principalmente cercando la possibilità di scorrere la mia directory mentre viene modificata dinamicamente tramite uno script in esecuzione.

146
Zaid

In less, puoi digitare F per continuare a leggere alla fine di un file (come tail -f); puoi digitare :e e un nome file per visualizzare un file diverso, ma sfortunatamente, se si immette il nome del file corrente, less non ricarica il file. Tuttavia c'è un trucco per farlo rileggere il file corrente, suggerito da sabgenton : digitare :e e inserisci il nome di un file inesistente ; che fa sì che less visualizzi un messaggio di errore e quindi ricarichi il file corrente.

Se stai cercando un'alternativa a watch ls, eccone alcuni:

  • I moderni file manager (ad es. Nautilus, Thunar, Konqueror, Dolphin, Finder) aggiornano le visualizzazioni in tempo reale.
  • Emacs non ha aggiornamento in tempo reale, ma con auto-revert-mode, ricaricherà il file o la directory ogni 5 secondi (il ritardo è configurabile).
  • Sebbene w3m sia principalmente un browser Web, crea una directory passabile e un visualizzatore di file di testo. Premere R per ricaricare l'URL (locale).

Shift+F renderà less simile a tailf. Cioè, viene aggiornato se vengono aggiunti più dati al file.

68
balki

Digita semplicemente:

less +F filename

Questo emula premendo "F" all'interno dell'editor.

44
jhclark

Le pagine man possono essere molto istruttive. Non lasciarti intimidire da loro. Tra tutti gli altri, man less dice che puoi usare il comando R per:

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

(Mi rendo conto che questa domanda ha più di 6 anni, ma emerge dalle ricerche su Google, quindi non sono l'unico che ha fatto clic sul link per arrivare qui.)

23
destenson

Il tasto "F" quando si esegue less eseguirà un "follow" simile a tail -f, ma non sono sicuro che ciò raggiungerà ciò che stai cercando qui.

5
Dave Jennings

Normalmente scrivo e basta G per adeguare l'output su una sola volta. Lo trovo particolarmente utile su un file system di rete come CIFS.

5
jorb

R per ridipingere non ricarica sempre il file.[1]

Una soluzione alternativa che ricarica sempre il file è premere hq, che aprirà la pagina della Guida, quindi si chiuderà. Ha un effetto collaterale nel forzare la ricarica del file.


[1] Ecco alcuni esempi di situazioni che R fa e non ricarica:

  • > e >> modifiche: viene ricaricato
  • sed -i, gEdit, TextEdit: NON ricaricare
  • Su Linux, vi cambia: viene ricaricato
  • Su Mac, vi cambia: NON ricaricare

Credo che la differenza sia dovuta al fatto che l'inode cambi (puoi verificare con ls -i foo.txt). Se l'inode cambia, allora R non funzionerà.

3
wisbucky

Puoi utilizzare vim per leggere il file, quindi aggiungere il seguente mapping al tuo .vimrc file e puoi ricaricare facilmente un file con ,r:

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

Nota se hai già modificato il file, vim si lamenterà. Passa a

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

Per ignorare le modifiche.

1
puk

Puoi reindirizzarlo a tail -f invece, ti farebbe seguire l'output. Perderesti comunque la possibilità di muoverti (scorrere) nell'output.

0
Gert

Ho appena trovato questa discussione come chiunque altro. Vorrei aggiungere la soluzione di quando sei già alla fine del file, usando 'g' seguito da 'G' forzerà un aggiornamento del file.

Ho finito per creare un pulsante macro per questo nel mio programma terminale (SecureCRT). La macro è semplicemente "gG".

0
ZMitchell

Se non si è contrari all'utilizzo di un browser, è possibile avviare il server Web Algernon con questo comando:

algernon -a -t /directory/name

Verrà quindi visualizzato e aggiornato automaticamente un elenco di file su http: // localhost: 3000 /

0
Alexander