GNU/Linux >> Linux Esercitazione >  >> Linux

L'aggiunta del comportamento della coda dove entra aggiunge righe vuote a less

Questo non è davvero tail comportamento -- è il terminale. Tail sta solo 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 in realtà non accetta affatto input da te. Puoi digitare qualunque altra cosa tu voglia e anche quella apparirà.

less , tuttavia, è un'app per console e richiede l'input e lo elabora. Sta gestendo la console usando le sequenze di controllo del terminale, che è il modo in cui puoi scorrere. Consentirti di inserire caratteri arbitrari nello stream rovinerebbe la visualizzazione e comunque utilizza meno il tuo input per controllare il programma.

Sfortunatamente, non sembra avere un modo per contrassegnare visivamente la posizione corrente. Questa non è una richiesta di funzionalità terribile, tuttavia, e meno lo fa ottieni comunque nuove funzionalità di tanto in tanto.


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

Deluso dalla risposta accettata, ho trovato una soluzione alternativa. Non è l'ideale, ma mi permette di contrassegnare la mia posizione nel registro che sto seguendo con less , che è il punto.

Ho creato un piccolo script eseguibile (l'ho chiamato marklog ) con i seguenti contenuti e inseriscilo 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, il che potrebbe essere un rompicapo in molte situazioni. Ho anche creato questa versione che uso per scrivere su file di log 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. Ci sono almeno 3 modi in cui puoi usarli:

  1. Nel punto in cui normalmente premi invio alcune volte quando usi tail -f , esegui invece marklog da un altro terminale (fornendo il percorso del file di registro come argomento).

  2. Usa Ctrl Z per sospendere less quindi puoi eseguire lo script nella stessa finestra di terminale, ma quando riesegui il primo piano less (usando fg , ovviamente), non sarà più in modalità 'segui', quindi dovrai premere Maiusc F di nuovo...

  3. Infine, e questo potrebbe essere il modo più conveniente, perché non è necessario digitare il percorso del file di registro:eseguire marklog direttamente da less digitando !marklog % . Less sostituirà il nome file corrente per % . Tuttavia, less non risponderà al ! mentre è in modalità 'segui', quindi dovrai premere Ctrl C prima di uscire dalla modalità follow, esegui !marklog % , quindi Maiusc F di nuovo.

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

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


Linux
  1. Numero di righe emesse da Ls?

  2. Comportamento imprevisto di uno script di shell?

  3. Colorare l'output della coda con Sed?

  4. Stampa un file, saltando le prime X righe, in Bash

  5. Simulazione della pressione del tasto INVIO nello script bash

Come eseguire l'output in coda -f con i colori utilizzando solo Awk e mostrare il resto dell'output?

Aggiunta di utenti ai sudoer tramite script di shell

eco stringa | xclip -selection clipboard , copia la 'stringa' ma vi aggiunge anche una nuova riga. come risolvere questo problema?

Recupera i log delle ultime 100 righe

C'è un modo per mantenere il testo passato in testa, coda, meno, ecc. Da colorare?

Aggiunta di una riga nel file hosts, ottenere l'autorizzazione negata quando si utilizza sudo - Mac