Conserva la cronologia tcsh in più finestre del terminale


8

Come possiamo preservare o mantenere la stessa cronologia su più terminali?

La stessa domanda, ma per bash shell, è stata discussa nel link seguente

Conserva la cronologia di bash in più finestre del terminale

fatemi sapere le impostazioni corrispondenti per shell tcsh?


Per ulteriori informazioni su tcsh history, consultare man tcsh. La ricerca history -Sdovrebbe passare alla parte più pertinente.
Randall,

Risposte:


7

Queste variabili impostano la cronologia per fondersi invece di sovrascrivere e non salvare i duplicati:

set history=1000
set histdup=erase
set savehist=(1000 merge)

la salsa segreta è questa linea:

alias precmd 'history -S; history -M'

che salverà e unirà la cronologia prima di stampare il prompt, ovvero dopo ogni comando digitato.

tutto quanto sopra dovrebbe essere aggiunto al tuo file .tcshrc .


Quando ho aggiunto questo alias precmd 'history -S; history -M'non è successo nulla quando ho scritto qualsiasi comando. C'è qualcos'altro che dovrebbe essere fatto?
Ayman Salah,

@AymanSalah ciò che accade non è ovvio: è il .historyfile (o il histfilevalore della variabile shell, se impostato) che viene scritto sul disco. Senza l' precmdalias impostato, ls -l .historymostrerà il .historyfile come intatto. Con precmd set come sopra, ls -l .historymostrerà il timestamp e la dimensione aggiornati, come viene scritto con ogni comando.
Randall,

@Randall Grazie per averlo sottolineato. Ho avuto problemi con la sessione di shell. Quello che stai dicendo è corretto al 100%.
Ayman Salah

1

Oltre alla risposta di Idan , voglio aggiungere che alias precmd 'history -S; history -M'potenzialmente può rovinare il file della cronologia, poiché registra anche i segnali SIGINT ed EOF (Ctrl + C e Ctrl + D).

inserisci qui la descrizione dell'immagine

Un modo migliore sarebbe salvare e unire la cronologia della shell corrente dopo aver eseguito un comando.

È possibile ottenerlo tramite questa impostazione di seguito, poiché tcsh non riconosce SIGINT o EOF come comando valido.

alias postcmd       "history -S; history -M"
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.