Come utilizzare la cronologia di Bash nel terminale Linux o macOS

Sommario:

Come utilizzare la cronologia di Bash nel terminale Linux o macOS
Come utilizzare la cronologia di Bash nel terminale Linux o macOS

Video: Come utilizzare la cronologia di Bash nel terminale Linux o macOS

Video: Come utilizzare la cronologia di Bash nel terminale Linux o macOS
Video: APPLE WATCH 6: il dottore dice sì! 👨‍⚕️🩺 | Recensione - YouTube 2024, Novembre
Anonim
La shell bash è l'ambiente di terminale standard incluso con la maggior parte delle distribuzioni Linux, incluso con macOS, e disponibile per l'installazione su Windows 10. Memorizza i comandi che scrivi e li memorizza in un file di cronologia. Probabilmente conosci alcune basi della storia di bash, ma è molto più potente di quanto potresti realizzare.
La shell bash è l'ambiente di terminale standard incluso con la maggior parte delle distribuzioni Linux, incluso con macOS, e disponibile per l'installazione su Windows 10. Memorizza i comandi che scrivi e li memorizza in un file di cronologia. Probabilmente conosci alcune basi della storia di bash, ma è molto più potente di quanto potresti realizzare.

Tasti rapidi

Per scorrere la cronologia di bash, puoi utilizzare alcune delle scorciatoie da tastiera utili di bash. Premi queste scorciatoie e i comandi che hai usato in precedenza appariranno al prompt.

  • Freccia su o Ctrl + P: Vai al comando precedente nella tua cronologia. Premi il tasto più volte per tornare indietro attraverso i comandi che hai usato.
  • Freccia in giù o Ctrl + N: Vai al prossimo comando nella tua cronologia. Premi il tasto più volte per andare avanti con i comandi che hai usato.
  • Alt + R: Annulla eventuali modifiche a un comando che hai estratto dalla cronologia se lo hai modificato sulla riga corrente.

Bash ha anche una speciale modalità di "richiamo" che puoi usare per cercare i comandi che hai precedentemente eseguito, piuttosto che scorrerli uno per uno.

  • Ctrl + R: Richiama l'ultimo comando corrispondente ai caratteri che fornisci. Premere questo collegamento e iniziare a digitare per cercare la cronologia di bash per un comando.
  • Ctrl + O: Esegui il comando che hai trovato con Ctrl + R.
  • Ctrl + G: Lascia la modalità di ricerca della cronologia senza eseguire un comando.
Image
Image

Visualizza la tua cronologia di Bash

È possibile stampare l'intera cronologia di bash sullo schermo eseguendo un singolo comando:

history

Vedrai un elenco di tutti i comandi nella cronologia di bash, insieme a un numero a sinistra di ciascuno. Il comando con un "1" accanto ad esso è il comando più vecchio nella cronologia di bash, mentre il comando con il numero più alto è il più recente.

Puoi fare tutto quello che vuoi con l'output. Ad esempio, è possibile collegarlo al
Puoi fare tutto quello che vuoi con l'output. Ad esempio, è possibile collegarlo al

grep

comando per cercare la cronologia dei comandi.

history | grep your_search

Image
Image

Potresti anche collegarlo al

tail

comando per visualizzare solo un piccolo numero di comandi recenti che hai eseguito. Ad esempio, il seguente comando mostrerà le ultime 5 voci nella cronologia.

history | tail -5

Image
Image

Esegui i comandi dalla tua storia

Bash può "espandere" rapidamente i comandi precedenti, oppure espanderli e modificarli. Questa funzione è nota come "espansione della cronologia" e utilizza un punto esclamativo, noto come "botto". Basta scriverli al prompt e premere Invio per eseguirli come se dovessi eseguire qualsiasi altro comando.

Per eseguire un comando specifico dalla cronologia in base al relativo numero, utilizzare il seguente comando:

!#

Ad esempio, supponiamo di voler eseguire il dodicesimo comando dalla cronologia di bash. Questo è il comando con un "12" a sinistra quando si esegue il

history

comando. Dovresti digitare il seguente comando.

!12

Per rieseguire l'ultimo comando eseguito, digitare quanto segue. Questo ha lo stesso effetto di premere una volta la freccia Su per visualizzare il comando precedente e quindi premere Invio.
Per rieseguire l'ultimo comando eseguito, digitare quanto segue. Questo ha lo stesso effetto di premere una volta la freccia Su per visualizzare il comando precedente e quindi premere Invio.

!!

Puoi anche riferire a un comando un certo numero di righe indietro. Per esempio,

!-2

eseguirebbe il penultimo comando eseguito.

!!

significa la stessa cosa di

!-1

This expansion works anywhere on the line. You can add anything you like before or after
This expansion works anywhere on the line. You can add anything you like before or after

!!

o una qualsiasi delle altre espressioni in questa sezione. Ad esempio, puoi digitare il seguente comando per rieseguire l'ultimo comando che hai eseguito

sudo

dandogli i privilegi di root. Questo è particolarmente utile se ti dimentichi di aggiungere

sudo

prima di eseguire un comando.

sudo !!

Oppure, ad esempio, è possibile rieseguire il comando precedente e reindirizzare l'output a grep per cercare del testo.

!! | grep text

Per cercare un comando nella cronologia ed eseguirlo, digitare quanto segue. Questo eseguirà l'ultimo comando che corrisponde al testo specificato:
Per cercare un comando nella cronologia ed eseguirlo, digitare quanto segue. Questo eseguirà l'ultimo comando che corrisponde al testo specificato:

!text

Quindi, se di recente hai eseguito un comando che inizia con

ping

è possibile eseguire il seguente comando per cercarlo. Questo cercherà al contrario nella cronologia, individuerà il comando più recente che inizia con"

pi

Ed eseguirlo immediatamente:

!pi

Puoi aggiungere un
Puoi aggiungere un

:p

ad una qualsiasi delle espansioni precedenti e bash stamperà il comando sul terminale senza eseguirlo. Questo è utile se vuoi confermare che stai selezionando il comando corretto prima di eseguirlo.

!12:p

!!:p

!text:p

Image
Image

Riutilizza argomenti dalla tua storia

Bash consente anche di eseguire un nuovo comando, ma usa gli argomenti dei comandi precedenti nella cronologia. Questo può aiutarti a riutilizzare rapidamente argomenti lunghi o complicati senza doverli ridigitare.

command !$

Ad esempio, supponiamo che tu abbia eseguito il comando

touch /home/chris/some_long_file_name_you_dont_want_to_type_again

. Ora vuoi eseguire il comando

nano /home/chris/some_long_file_name_you_dont_want_to_type_again

. Piuttosto che scrivere tutto da capo, potresti eseguire:

nano !$

Il

!$

farebbe in modo che bash riempia automaticamente l'ultimo argomento del comando precedente.

Questo riempie solo l'ultimo argomento. Quindi, se corri
Questo riempie solo l'ultimo argomento. Quindi, se corri

ping google.com -c 4

e poi corri

ping !$

questo si espanderebbe a"

ping 4

“.

Per risolvere questa situazione, puoi utilizzare il seguente trucco per espandere il primo argomento sulla riga, piuttosto che l'ultimo:

command !^

Quindi, se hai corso

ping google.com -c 4

e poi corse

ping !^

bash lo espanderebbe a"

ping google.com'

Per riempire tutti gli argomenti usati nel comando precedente invece di un solo argomento, devi usare quanto segue:
Per riempire tutti gli argomenti usati nel comando precedente invece di un solo argomento, devi usare quanto segue:

command !*

Quindi, se hai corso

ping !*

invece, bash riempirebbe automaticamente tutti gli argomenti usati nel comando precedente.

Puoi usare lo stesso trucco che usi per eseguire comandi dalla tua cronologia per ottenere argomenti da essi. Basta usare il seguente modulo.
Puoi usare lo stesso trucco che usi per eseguire comandi dalla tua cronologia per ottenere argomenti da essi. Basta usare il seguente modulo.

command !abc:#

Ad esempio, abbiamo eseguito il comando

sudo hostname ubuntu

in precedenza. Se eseguiamo il seguente comando, bash eseguirà una ricerca all'indietro attraverso la cronologia per trovare l'ultimo comando che inizia con le lettere che digitiamo e riempi l'argomento specificato. Quindi, se corriamo

echo !su:2

bash cercherà di nuovo per trovare l'ultimo comando che inizia con"

su

"E compila il suo secondo argomento, che è"

ubuntu

“.

Altri trucchi funzionano come ci si potrebbe aspettare. Ad esempio, sostituendo il numero con un asterisco, noto come carattere jolly, bash riempie tutti gli argomenti del comando:

command !abc:*

Image
Image

Rieseguire il comando precedente e modificarlo

Bash consente anche di rieseguire il comando precedente e specificare qualcosa che deve essere modificato. Questo può essere utile per correggere un refuso in un comando. Ad esempio, il seguente comando eseguirà nuovamente il comando precedente, sostituendo il testo"

abc

"In esso con il testo"

xyz

“.

^abc^xyz

Ad esempio, se accidentalmente hai corso

ping gogle.com

potresti quindi correre

^gog^goog

e bash avrebbe eseguito il comando

ping google.com

anziché.

Image
Image

Dove viene archiviata la cronologia e come eliminarla

La shell bash memorizza la cronologia dei comandi che hai eseguito nel file di cronologia dell'account utente in ~ /.bash_history per impostazione predefinita. Ad esempio, se il tuo nome utente è bob, troverai questo file in /home/bob/.bash_history.

Poiché la cronologia è memorizzata in un file, persiste tra una sessione e l'altra. Puoi eseguire alcuni comandi, uscire, tornare il giorno successivo e quei comandi saranno ancora nel file della cronologia pronti per essere visualizzati e utilizzati. Ogni account utente ha il proprio file di cronologia con una cronologia dei comandi separata.

Per cancellare la cronologia di bash, puoi eseguire il seguente comando. Questo cancella il contenuto del file.bash_history del tuo account utente:

history -c

Bash si limita a ricordare un numero limitato di comandi per impostazione predefinita, impedendo che il file della cronologia aumenti troppo. Il numero di voci della cronologia che bash ricorda è controllato da
Bash si limita a ricordare un numero limitato di comandi per impostazione predefinita, impedendo che il file della cronologia aumenti troppo. Il numero di voci della cronologia che bash ricorda è controllato da

HISTSIZE

variabile. Il valore predefinito è in genere di 500 o 1000 voci. È possibile eseguire il seguente comando per visualizzare la dimensione della cronologia di bash sul proprio sistema.

echo $HISTSIZE

Per impostare la cronologia su zero, eseguire il comando seguente.

HISTSIZE=0

Per la sessione corrente, bash non memorizzerà alcuna voce della cronologia a meno che tu non esegua un comando come

HISTSIZE=1000

per reimpostarlo su un certo numero di voci.

Image
Image

Come ignorare spazi e duplicati

Bash ti consente di ignorare le voci della cronologia che iniziano con uno spazio se imposti il

HISTCONTROL

variabile a

ignorespace.

HISTCONTROL=ignorespace

Digita uno spazio prima di un comando prima di eseguirlo nella bash shell e il comando verrà eseguito normalmente, ma non verrà visualizzato nella cronologia se questa variabile è abilitata. Ciò ti consente di mantenere la tua cronologia un po 'più pulita, scegliendo di eseguire comandi senza che vengano visualizzati nella cronologia.

Bash ti consente anche di ignorare i comandi duplicati che possono ingombrare la tua cronologia. Per fare ciò, impostare
Bash ti consente anche di ignorare i comandi duplicati che possono ingombrare la tua cronologia. Per fare ciò, impostare

HISTCONTROL

a

ignoredups.

HISTCONTROL=ignoredups

Per utilizzare entrambi
Per utilizzare entrambi

ignorespace

e

ignoredups

funzione, impostare il

HISTCONTROL

variabile a

ignoreboth.

HISTCONTROL=ignoreboth

Nota che le variabili bash che hai impostato rimarranno solo per la sessione corrente. Dovrai aggiungerli al file.bashrc del tuo account utente per far sì che questi valori vengano impostati automaticamente in ogni sessione di bash che inizi, se preferisci.

Consigliato: