5.6. History

La shell C, la shell Korn e molte altre shell avanzate, mantengono informazioni sui comandi che sono stati eseguiti in shell. La quantità di storia memorizzabile dipende dalla shell utilizzata. Qui si descriveranno le caratteristiche di history della shell C.

Si possono usare le variabili history e savehist per settare rispettivamente quanti comandi della shell corrente memorizzare e per quanti login mantenerli. Si può inserire in .cshrc la seguente linea per memorizzare 100 comandi della shell corrente fino a 50 prossimi login.

set history=100 savehist=50

La shell mantiene traccia della storia dei comandi tra un login e l'altro memorizzandola nel file ~/.history.

Si può usare il comando built-in history per richiamare i comandi eseguiti precedentemente, ad esempio per stampare gli ultimi 10:

% history 10
52 cd workshop
53 ls
54 cd Unix_intro
55 ls
56 pwd
57 date
58 w
59 alias
60 history
61 history 10

Si può ripetere l'ultimo comando digitando !!:

% !!
53 ls
54 cd Unix_intro
55 ls
56 pwd
57 date
58 w
59 alias
60 history
61 history 10
62 history 10

Si può ripetere un comando numerato introducendo il numero con un !, esempio:

% !57
date
Tue Apr 9 09:55:31 EDT 1996

Si può ripetere un comando che inizia con qualche stringa, introducendo la parte iniziale univoca della stringa con un !, esempio:

% !da
date
Tue Apr 9 09:55:31 EDT 1996

Quando la shell valuta la linea di comando verifica subito la sostituzione di history prima di interpretare qualche altra cosa. Per usare uno di questi caratteri speciali in un comando di shell è necessario usare un escape, o effettuare un quoting, apporrendo un \ prima del carattere, esempio \!. I caratteri di sostituzione di history sono sintetizzati nella tabella seguente:

Tabella 5.1. Comandi di sostituzione di history per la shell C
ComandoFunzione sostitutiva
!!ripete l'ultimo comando
!nripete il comando numero n
!-nripete l'n-esimo comando partendo dall'ultimo
!strripete il comando che inizia con la stringa str
!?str?ripete il comando con all'interno str
!?str?%seleziona il primo argomento che ha str all'interno
!:ripete l'ultimo comando, generalmente usato con una modifica
!:nseleziona l'n-esimo argomento dell'ultimo comando (n=0 è il nome del comando)
!:n-mseleziona gli argomenti tra l'n-esimo e l'm-esimo argomento dell'ultimo comando
!^seleziona il primo argomento dell'ultimo comando (come !:1)
!$seleziona l'ultimo argomento dell'ultimo comando
!*seleziona tutti gli argomenti del precedente comando
!:n*seleziona gli argomenti dall'n-esimo all'ultimo, incluso, del precedente comando
!:n-seleziona gli argomenti dall'n-esimo all'ultimo, escluso, del precedente comando
^str1^str2^rimpiazza str1 con str2 nella prima occorrenza nel precedente comando
!n:s/str1/str2/sostituisce str1 con str2 nella prima occorrenza nell'n-esimo comando, finendo con una sostituzione globale g

Altre informazioni sono descritte nelle pagine man.

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.

Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.