L'aggiunta del comportamento della coda dove invio aggiunge meno righe vuote


8

Adoro less, che posso usare per seguire i registri con la +Fbandiera (o il ShiftFtasto di scelta rapida), cercare avanti e indietro e in generale spostarmi liberamente attraverso il documento.

Ma c'è una cosa che manca less: di solito sono alla fine del file e voglio vedere accadere nuove cose. In tail -favrei appena colpito enterpiù volte e le nuove linee di registro apparivano chiaramente separate dalle vecchie linee.

È possibile aggiungere questo a less? Come?


Non penso che tu possa farlo, anche se a volte farò eco -e '\ n \ n \ n \ n \ n' >> / dev / pts / 0 per esempio, non è così pulito ma almeno ho un punto di riferimento da cui mi sono interrotto quando distolgo lo sguardo.
David Houde,

Risposte:


6

Questo non è proprio tailil comportamento - è il terminale. Tail sta semplicemente inviando un flusso di output a stdout, che va al tuo terminale, e stai inserendo righe vuote nel mezzo di quell'output premendo Invio. La coda stessa non accetta affatto input da te. Puoi digitare qualsiasi altra cosa tu voglia e anche quella verrà visualizzata.

less, tuttavia, è un'app console e richiede input e la elabora. Gestisce la console utilizzando sequenze di controllo dei terminali, ed è così che puoi scorrere. Permettendo di inserire caratteri arbitrari nello stream si rovinerebbe il display e comunque si utilizzerà meno l'input per controllare il programma.

Sfortunatamente, non sembra avere un modo per contrassegnare visivamente la posizione corrente. Questa non è una richiesta di funzionalità terribile, però, e meno non ancora ottenere nuove caratteristiche di volta in volta.


Hai un link a portata di mano per richiedere questa funzione ai meno manutentori?
blueFast


4

Ho trovato la tua domanda mentre cercavo la stessa risposta per me stesso.

Delusa dalla risposta accettata, ho escogitato una soluzione alternativa. È tutt'altro che ideale, ma mi permette di segnare la mia posizione nel registro che sto seguendo less, che è il punto.

Ho creato un piccolo script eseguibile (l'ho chiamato marklog) con i seguenti contenuti e l'ho messo nel mio percorso:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

Naturalmente, questo funziona solo se si dispone dell'accesso in scrittura al file di registro, che potrebbe essere un problema in molte situazioni. Ho anche creato questa versione che uso per scrivere nei file di registro che non possiedo (ma a cui ho accesso sudo):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

Questi script forniscono proprio il tipo di interruzione visiva che stavo cercando. Esistono almeno 3 modi per usarli:

  1. Nel punto in cui normalmente si preme Invio alcune volte durante l'utilizzo tail -f, invece eseguire marklogda un altro terminale (fornendo il percorso al file di registro come argomento).

  2. Utilizzare CtrlZper sospendere in lessmodo da poter eseguire lo script nella stessa finestra del terminale, ma quando si ri-primo piano less(usando fg, ovviamente), non sarà più in modalità 'follow', quindi sarà necessario premere di ShiftFnuovo ...

  3. Infine, e questo potrebbe essere il modo più conveniente, perché non è necessario digitare il percorso del file di registro: esegui marklogdirettamente lessdigitando !marklog %. Lesssostituirà il nome file corrente per %. Tuttavia, lessnon risponderà al! mentre è in modalità 'follow', quindi dovrai premere CtrlCprima per uscire dalla modalità follow, eseguire !marklog %, quindi di ShiftFnuovo.

Con il metodo 3, ottieni anche il bonus aggiuntivo della cronologia dei comandi di Less: basta !premere e quindi utilizzare la freccia su per selezionare il comando più recente (per me, è sempre marklog).

Spero che questo aiuti qualcuno tanto quanto me lo ha già aiutato.


1

Premi Shift+ Falla fine del file e meno inizierà a funzionare come tail -f.


2
No, non lo farà. Seguirà nuove linee, ma non funzionerà come tail -f. Nello specifico non accetterà entrare come newline, che è l' unico punto della mia domanda. Inoltre, ho già menzionato Shift+Fnella domanda (con un piccolo errore, devo dire)
blueFast

1

Non penso che tu possa farlo. Ho usato me 'per contrassegnare i luoghi di interesse e poi andarli di nuovo, ma questo non ti dà la separazione che chiedi. Forse qualcosa come multitail farà quello che vuoi.


-1

La risposta di Lambart mi porta alla mia soluzione preferita. Grazie a Lambart!

Basta intervistare la modalità follow ctrlced entrare !printf "\n\n---$(date)---\n\n" >> %. Dopodiché devi premere enterun'altra volta e premere shiftfper ricominciare seguendo il file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.