Cronologia dei comandi in Zsh


62

In che modo Zsh tiene traccia della cronologia dei comandi?

Vedo due file nella mia directory home: .zhistorye .zsh_history. Qual'è la differenza tra loro? I file sembrano contenere tutta la mia storia. Zsh continua ad aggiungere linee a una di esse per sempre ? Ciò non renderebbe la ricerca della cronologia troppo lenta?

Posso creare collegamenti simbolici a questi file in un'altra posizione? (ad esempio un repository git per tenere traccia delle modifiche alla cronologia)


Controlla il tuo ~/.zshrce / o le /etc/zshrcopzioni descritte lì zsh.sourceforge.net/Guide/zshguide02.html#l17
UVV

Risposte:


79

Zsh memorizza le righe di input (possibilmente con informazioni temporali) nel file indicato dalla variabile HISTFILE. Questo dovrebbe essere un nome di file assoluto (altrimenti verrà interpretato in relazione a qualunque directory sia corrente al momento).

Zsh non ha alcun valore predefinito incorporato per HISTFILE. La distribuzione zsh viene fornita con una procedura guidata di configurazione per i nuovi utenti che ha il valore ~/.histfileincorporato, quindi questo è ciò che gli utenti zsh ottengono di default. Oh-my-zsh viene fornito con HISTFILE=.zhistorypreset. Quindi sembra che tu abbia provato zsh sia con l'impostazione predefinita che con oh-my-zsh. Controlla le tue .zshrc(o le date dei file) per vedere quale stai attualmente utilizzando.

Come zsh apre il file e quindi cosa succede se si tratta di un collegamento simbolico, dipende da diverse opzioni.

  • Se una delle opzioni append_history(impostata per impostazione predefinita), inc_append_historyo share_historyè impostata o quando la cronologia viene salvata in modo esplicito con fc -AI, zsh aggiunge al file esistente.
    Si noti che anche con queste impostazioni, zsh occasionalmente sovrascrive il file come descritto di seguito per ridurlo alle dimensioni.
  • Altrimenti, se l'opzione hist_save_by_copyè impostata (è impostata di default da zsh 5.0, ma non esiste in 4.2), zsh scrive un file temporaneo quindi lo sposta in posizione al termine. In questo caso, se il file cronologico era un collegamento simbolico, il nuovo file sostituisce il collegamento simbolico.
  • Altrimenti zsh sovrascrive il file esistente in atto.

Piuttosto che puntare zsh su un collegamento simbolico, imposta HISTFILEdove vuoi che sia il file della cronologia.

Quante righe della cronologia vengono mantenute è configurata attraverso le variabili HISTSIZEe SAVEHIST. HISTSIZEè il numero massimo di righe mantenute in una sessione ed SAVEHISTè il numero massimo di righe conservate nel file cronologico.

Per salvare un po 'di cronologia, è necessario impostare entrambi HISTFILEe SAVEHIST, poiché il valore predefinito SAVEHISTè 0. È possibile aumentare HISTSIZEanche (a partire da zsh 5.0, il valore predefinito è solo 30).

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.