Come fermare Bash aggiungendo la cronologia


9

Ho molti problemi a configurare la cronologia dei terminali di Bash come voglio. Vorrei non avere voci duplicate e se inserisco un comando lo voglio salvato e i duplicati sopra rimossi.

Il problema è che il historycomando mi mostra che sta funzionando come voglio, ma una volta disconnesso i duplicati tornano di nuovo. Credo che stia semplicemente aggiungendo la storia a quella esistente. Ho queste righe nel mio .bashrcfile:

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

Ho anche provato a commentare shopt, ma aggiunge ancora la cronologia al logout. Come posso avere la cronologia esattamente come è prima di disconnettermi?


2
C'è una buona spiegazione qui: unix.stackexchange.com/questions/18212/…
jasonwryan,

Risposte:


7

L' erasedupsdovrebbe fare quello che vuoi per quanto riguarda i duplicati - basta notare che la cancellazione duplicati viene attivato al momento della aggiungendo una nuova voce alla storia e che cancella tutte le vecchie occorrenze di un comando, lasciando solo il più recente.


Rispondere alla domanda " Come posso avere la cronologia esattamente come è prima di disconnettermi? "

A mio modo di vedere, questo può essere utile solo una volta ogni tanto. (Altrimenti perché dovresti usare la cronologia?) Puoi farlo emettendo

history -c; history -r

Ciò cancella tutte le voci della cronologia attualmente conservate in memoria e quindi rilegge l'intera cronologia dal file della cronologia. Quindi tutti i comandi che hai emesso dopo l'accesso alla sessione di shell corrente sono stati dimenticati. Lo trovo abbastanza utile in situazioni in cui eseguo molti test (molti comandi simili, ma non duplicati) e quindi non voglio che la mia storia sia confusa da questo - quindi ho un alias per questo nel mio .bashrc:

alias hrr='history -c; history -r'

( hrrda ricordare come "rilettura della storia").

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.