Ottieni la cronologia di bash per ricordare solo i comandi eseguiti con spazio prefissato!


10

I comandi eseguiti nel terminale con prefisso spazi vuoti non vengono registrati nel file della cronologia dei comandi. Ma c'è un modo per ottenere il contrario, cioè la storia dovrebbe registrare solo quelli che hanno il prefisso con lo spazio?

Risposte:


12

Puoi invertire le impostazioni predefinite di Ubuntu impostando due variabili (HISTIGNORE an HISTCONTROL), usa i comandi come di seguito:

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredupscambia il comportamento della cronologia per ignorare solo le linee duplicate e non ignorare le linee che iniziano con uno spazio. (È inoltre possibile impostare HISTCONTROL sulla stringa vuota (con HISTCONTROL=) se si desidera conservare i duplicati, ma di solito ciò non è desiderato.)

HISTIGNORE='!( *)'fa in modo che la storia ignori ogni riga che non inizia con uno spazio: ( *)corrisponderebbe a ogni riga che inizia con uno spazio, ma il primo punto !nega la corrispondenza, quindi corrisponde a tutto ciò che non inizia con uno spazio. E tutto ciò che corrisponde al modello HISTIGNORE verrà ignorato dalla storia. (Quest'ultima opzione richiede che bash sia eseguito con extglobacceso, con shopt -s extglob, ma questa è l'impostazione predefinita su Ubuntu.)

Se vuoi renderlo permanente, non dimenticare di inserire i due comandi sopra nel tuo ~/.bashrc.


grazie, è esattamente quello che volevo ... salvare le modifiche in .bashrc... Ne avevo bisogno per impedire a bash di registrare ogni cds, se lse altri comandi quotidiani che uso; e per quei pochi comandi di cui ho bisogno nella storia, ora posso usare il prefisso ..
preciso il

1
@rusty Se vuoi solo escludere alcuni comandi banali, potrebbe essere meglio per te se usi qualcosa del genere HISTIGNORE='ls*:cd*', che farà ignorare la cronologia di ogni riga che inizia con lso cd, puoi estendere tale elenco con altri comandi, basta inserire un :comando tra . Ma non dimenticare che anche la funzione di richiamo del comando a cui puoi accedere con il "tasto freccia su" utilizza questa cronologia, quindi se imposti qualcosa da ignorare, non sarai in grado di richiamare quei comandi ignorati con " freccia su ".
falconiere,

Volevo ignorare qualsiasi comando SSH, ma non comandi come ssh-copy-ido ssh-keygen. In HISTIGNORE, ho incluso " ssh\ *" con i miei altri comandi ignorati. La fuga dal carattere spaziale sembra essere obbligatoria.
user38537

2

" I comandi eseguiti nel terminale con prefisso spazi vuoti non sono registrati nel file della cronologia dei comandi "

Sì.

storia terminale


1
è un'ambientazione in bash ;-)
Rinzwind

comando con prefisso spazi vuoti. Come `sudo apt-get update`
Avinash Raj,

Qual è il valore della tua variabile HISTCONTROL?
Glenn Jackman,

@AvinashRaj: sì, vedimi comando "questo non deve essere registrato", ho messo uno spazio (visibile sia nella riga di comando che nella cronologia). Quindi non funziona in questo modo. Forse puoi configurarlo (con HISTCONTROL); ma non è il caso per impostazione predefinita.
MrVaykadji,
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.