bash history per la sessione corrente


15

Forse sto trascurando qualcosa, ma c'è un modo per ottenere la tua storia bash corrente per la sessione corrente che stai usando

se corro

ssh host
$ pwd
$ ls
$ cd /tmp

Voglio solo vedere quei 3 comandi e nient'altro


hai controllato il historycomando ??
Hackaholic,

lo so historyma questo non mi dà solo la mia sessione
Mike,

La quantità salvata tra le sessioni è controllata dalla variabile di shell SAVEHIST, se ricordo. Pertanto, se la quantità di cronologia salvata l'ultima volta fosse ZERO,
otterresti la

@mdpc, quali documenti stai leggendo? Nella pagina man di Bash non trovo alcun riferimento a SAVEHIST ma solo a HISTSIZEe HISTFILESIZE.
Wildcard

Risposte:


15

Un modo leggermente rotonda:

history -a ~/current_history

Ciò salverà la cronologia bash non salvata della sessione corrente ~/current_history, che sarà quindi possibile visualizzare.


questo potrebbe funzionare ma non gestisce più sessioni .. Suppongo di poter creare un file temporaneo casuale per memorizzarlo
Mike,

1
@Mike usa forse un nome collegato con il PID della shell ~/$$_history.
muru,

4
Vale la pena notare che questo non cancellerà la cronologia né influirà in alcun modo sul normale salvataggio della cronologia! Non ero sicuro fino a quando non l'ho provato. :)
NHDaly

Trovo più conveniente farlo semplicemente history -agettandolo insieme alla storia precedente in ~ / .bash_history ... che potrebbe essere un problema se la tua storia è più lunga del cutoff, che è un 1000 sui miei sistemi centos7 e fedora 24.
Ray Foss,

0

Ho avuto il problema che volevo scrivere la corrente historysu un file ma volevo comunque che le voci fossero registrate nella bash principalehistory

Ho risolto questo semplicemente allegando il file con cat:

history -a current-history
cat current-history >> .bash_history

-1

Utilizzare compper confrontare l'intera cronologia (inclusa la sessione Bash corrente) con la cronologia già persistente .bash_historye stampare solo quelle righe che sono uniche per la sessione corrente - che dovrebbero mostrare solo quei comandi che sono stati eseguiti dall'avvio della shell Bash corrente

comm -23 <( history | cut -c 8- ) ~/.bash_history

Modifica: come sottolineato da @Wildcard questo comando non funziona per tutte le distribuzioni di comm. Ho provato questo su Mac OS.

Una variante della stessa idea usando diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

Una buona idea, ma molto inaffidabile nei miei test. commpresuppone un input ordinato. Benvenuto in Stack Exchange! :)
Wildcard

@Wildcard, entrambi i lati dell'input commsono ordinati intrinsecamente nel mio esempio sopra. L'hai eseguito? E non ha prodotto la tua attuale cronologia delle sessioni di Bash?
Christian Kadner,

Sì, l'ho fatto e no, non è stato così. E no, il contenuto di non~/.bash_history è ordinato; e nemmeno l'output di ordinato viene rimosso una volta rimossi i numeri di riga iniziali. (Oltre a ciò, prevede input ordinati lessicograficamente, input non ordinati numericamente.)historycomm
Wildcard

Bene, intendevo che entrambi gli argomenti del commcomando nel mio esempio sono nello stesso ordine, non che sono ordinati lessicografici. La versione di FreeBSD commnon richiede input ordinati dal punto di vista lessicografico
Christian Kadner,

Sto usando Mac OS X. Non ha nulla a che fare con quello. Guardando più da vicino, sembrano essere i primi comandi della cronologia in memoria, che da allora sono stati sovrascritti nel file della cronologia da altre shell in uscita.
Wildcard
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.