Risposte:
Il history
built-in bash
consente di specificare i nomi dei file quando utilizzato con i -anrw
flag e la -a
descrizione dei flag dagli help history
stati:
aggiungere le righe della cronologia da questa sessione al file della cronologia
Pertanto, possiamo fare:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Per la cronaca, -w
(la cronologia di scrittura nel file opion) scrive l' intera cronologia nel file specificato, quindi -a
(append) qui è la scelta preferita.
Ci sono altri modi manuali. In particolare ksh
non ha -a
segnala come bash
fa, ma cosa ksh
e mksh
hanno è HISTFILE
variabile d'ambiente (e bash
ha anche quello, perché bash
incluso un sacco di ksh
funzioni); a proposito, questa variabile di default non è impostata (almeno mksh
su Ubuntu non l'ha impostata). Quindi, per l'output della sessione corrente su un altro file, chiamiamo HISTFILE
anteposto al comando che nella sintassi della shell significa eseguire il comando con la variabile d'ambiente aggiuntiva specificata. Così:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Ciò che puoi anche vedere da questo è che ksh
e le sue shell correlate generano la cronologia con caratteri speciali, invece del testo normale bash
. Quindi, potresti voler aprire quel file con ksh
.
Per quanto riguarda la shell POSIX /bin/sh
su Ubuntu , che è Debian Almquist Shell o Dash, esiste già fc
integrata . Tuttavia, su Ubuntu il trattino è compilato senza lib-edit , che è una scelta consapevole da parte degli sviluppatori Ubuntu per motivi di prestazioni, quindi fc
e altre modalità che richiedono l'editing di linea non funzionano immediatamente (a meno che non si ricompili dash
e si installi lib-edit
).
I modi neutri della shell sarebbero di registrare la sessione con strumenti esistenti o scrivere la propria funzione per registrare in base al comando.