5.6. History
Indietro | Capitolo 5. Shell | Avanti

## 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

Comando | Funzione sostitutiva
--- | ---
`!!` | ripete l'ultimo comando
`!`n`` | ripete il comando numero `n`
`!-`n`` | ripete l'`n-esimo` comando partendo dall'ultimo
`!`str`` | ripete 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
`!:`n`` | seleziona l'`n-esimo` argomento dell'ultimo comando (n=0 è il nome del comando)
`!:`n`-`m`` | seleziona 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.

Indietro | Risali | Avanti
5.5. Controllo dei job | Partenza | 5.7. Cambiare la propria shell

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>.