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