Bash ha una ricca storia. Cioè, è una vecchia shell con un antenato ancora più vecchio (la Bourne shell), ma ha anche una grande history
comando che supera tutte le altre interfacce della cronologia della shell in base al numero di funzionalità. La versione Bash della history
consente ricerche inverse, richiamo rapido, riscrittura della cronologia e altro.
La history
comando non è come molti altri comandi. Potresti essere abituato a comandi come file eseguibili collocati in posizioni comuni a livello di sistema come /usr/bin
, /usr/local/bin
o ~/bin
. La history
incorporata il comando non è nel tuo PATH
e non ha una posizione fisica:
$ which history
which: no history in [PATH]
Invece, history
è una funzione incorporata della shell stessa:
$ type history
history is a shell builtin
$ help history
history: history [-c] [-d offset] [n] or
history -anrw [filename] or
history -ps arg [arg...]
Display or manipulate the history list.
[...]
Per questo motivo, la funzione cronologia in ogni shell è unica, quindi ciò che usi in Bash potrebbe non funzionare in Tcsh o Fish o Dash e ciò che usi in quelli potrebbe non funzionare in Bash. In alcuni casi, sapere cosa può fare Bash può ispirare gli utenti di altre shell a creare hack interessanti per clonare il comportamento di Bash e potrebbe sbloccare funzionalità di Bash che non sapevi esistessero.
Visualizza la cronologia di Bash
L'uso più elementare e frequente della history
il comando serve per visualizzare una cronologia della sessione della shell:
$ echo "hello"
hello
$ echo "world"
world
$ history
1 echo "hello"
2 echo "world"
3 history
Designatori di eventi
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
I designatori di eventi effettuano ricerche nella cronologia per evento. Un evento in questo contesto c'è un comando registrato nella cronologia, delineato da un carattere di nuova riga. In altre parole, è una riga, contrassegnata da un numero di indice di riferimento.
I designatori di eventi iniziano principalmente con un punto esclamativo, a volte chiamato anche bang (!
).
Per eseguire nuovamente un comando dalla cronologia, utilizzare il punto esclamativo seguito immediatamente (senza spazi) dal numero di indice del comando desiderato. Ad esempio, supponiamo che la riga 1 contenga il comando echo "hello"
e vuoi eseguirlo di nuovo:
$ !1
echo "hello"
hello
Puoi utilizzare il posizionamento relativo fornendo un numero negativo di righe dalla tua posizione attuale nella cronologia. Ad esempio, per tornare indietro di tre voci nella cronologia:
$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo
Se stai tornando indietro di una sola riga, puoi usare l'abbreviazione !!
invece di !-1
. Questo è un risparmio di un'intera sequenza di tasti!
$ echo "foo"
$ !!
echo "foo"
foo
Ricerca di stringhe
Puoi anche cercare una stringa specifica attraverso le voci, al contrario, per eseguire un comando. Per cercare un comando avvio con una stringa specifica, usa un punto esclamativo seguito immediatamente (senza spazio) dalla stringa che vuoi cercare:
$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo
Puoi anche cercare un comando contenente una stringa in qualsiasi posizione (non solo all'inizio). Per farlo, usa !
più la stringa che stai cercando, come al solito, ma circonda la stringa con punti interrogativi su entrambe le estremità. Puoi omettere il punto interrogativo finale se sai che la stringa è immediatamente seguita da un carattere di nuova riga (il che significa che è l'ultima cosa che hai digitato prima di premere Invio ):
$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo
Sostituzione di stringhe
Simile alla ricerca di stringhe all'inizio di una riga, puoi cercare una stringa e sostituirla con una nuova stringa, modificando il comando:
$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo
Rendi utile la cronologia
In Bash, il comando cronologia è in grado di fare molto di più di quanto è stato trattato qui, ma questo è un buon inizio per abituarsi a usare la tua storia invece di trattarla solo come riferimento. Usa la history
comando spesso e vedere quanto puoi fare senza dover digitare comandi. Potresti sorprenderti!