<Precedenti | Contenuti | Succ.>
Ricerca nella storia
In qualsiasi momento possiamo visualizzare il contenuto dell'elenco cronologico:
[io@linuxbox~]$ storia | meno
[io@linuxbox~]$ storia | meno
Per impostazione predefinita, bash memorizza gli ultimi 500 comandi che abbiamo inserito, sebbene la maggior parte delle distribuzioni moderne imposti questo valore a 1000. Vedremo come regolare questo valore in un capitolo successivo. Supponiamo di voler trovare i comandi che abbiamo usato per elencare / Usr / binUn modo in cui potremmo farlo:
[io@linuxbox~]$ cronologia | grep /usr/bin
[io@linuxbox~]$ cronologia | grep /usr/bin
E supponiamo che tra i nostri risultati otteniamo una riga contenente un comando interessante come questo:
88 ls -l /usr/bin > ls-output.txt
Il numero "88" è il numero di riga del comando nella cronologia. Potremmo usarlo immediatamente usando un altro tipo di espansione chiamato espansione della storiaPer utilizzare la nostra linea scoperta potremmo fare questo:
[io@linuxbox~]$ ! 88
[io@linuxbox~]$ ! 88
bash espanderà "!88" nel contenuto dell'ottantottesima riga della cronologia. Esistono altre forme di espansione della cronologia che tratteremo più avanti.
Bash offre anche la possibilità di effettuare ricerche incrementali nella cronologia. Ciò significa che possiamo dire a Bash di effettuare ricerche nella cronologia man mano che inseriamo caratteri, con ogni carattere aggiuntivo che affina ulteriormente la ricerca. Per avviare la ricerca incrementale, premi Ctrl-r seguito dal testo che stai cercando. Una volta trovato, puoi premere Invio per eseguire il comando o premere Ctrl-j per copiare la riga dalla cronologia alla riga di comando corrente. Per trovare la successiva occorrenza del testo (spostandosi "verso l'alto" nella cronologia), premi di nuovo Ctrl-r. Per interrompere la ricerca, premi Ctrl-g o Ctrl-c. Ecco come funziona:
[io@linuxbox~]$
[io@linuxbox~]$
Prima stampa Ctrl-R:
(ricerca inversa)`':
(ricerca inversa)`':
Il prompt cambia per indicare che stiamo eseguendo una ricerca incrementale inversa. "Inversa" perché stiamo cercando da "adesso" a un momento nel passato. Quindi, iniziamo a digitare il testo da cercare. In questo esempio "/usr/bin":
(ricerca inversa)`/ Usr / bin': ls -l /usr/bin > ls-output.txt
(ricerca inversa)`/ Usr / bin': ls -l /usr/bin > ls-output.txt
Immediatamente, la ricerca restituisce il nostro risultato. Con il nostro risultato, possiamo eseguire il comando premendo entra, oppure possiamo copiare il comando nella nostra riga di comando corrente per ulteriori modifiche premendo Ctrl-j. Copiamolo. Premi Ctrl-j:
[io@linuxbox~]$ ls -l /usr/bin > ls-output.txt
[io@linuxbox~]$ ls -l /usr/bin > ls-output.txt
Il prompt della shell ritorna e la riga di comando è caricata e pronta all'uso! La tabella seguente elenca alcuni dei tasti utilizzati per gestire la cronologia:
Tabella 8-5: Comandi della cronologia
Azione chiave
Azione chiave
Ctrl-p Passa alla voce precedente della cronologia. Stessa azione della freccia su. Ctrl-n Passa alla voce successiva della cronologia. Stessa azione della freccia giù. Alt-< Passa all'inizio (in alto) dell'elenco della cronologia.
Alt-> Sposta alla fine (in basso) dell'elenco cronologico, ovvero alla riga di comando corrente.
Ctrl-r Ricerca incrementale inversa. Esegue la ricerca incrementale dalla riga di comando corrente verso l'alto nell'elenco cronologico.
Alt-p Ricerca inversa, non incrementale. Con questo tasto, digita la stringa di ricerca e premi Invio prima che la ricerca venga eseguita.
Alt-n Ricerca in avanti, non incrementale.
Ctrl-o Esegue l'elemento corrente nella cronologia e passa a quello successivo. Questa funzione è utile se si sta tentando di rieseguire una sequenza di comandi nella cronologia.