GNU/Linux >> Linux Esercitazione >  >> Linux

Salva la giornata con successo con i comandi della cronologia di Bash

Hai in qualche modo sentito di aver eseguito comandi che non dovresti? Hanno incasinato le cose e ti hanno lasciato perplesso per quello che è successo? Con i comandi della cronologia di Bash, ti risparmi il mal di testa di capire cosa ha incasinato cosa e risparmi tempo rieseguendo comandi complessi.

Non sei un lettore? Guarda questo video tutorial correlato! Non vedi il video? Assicurati che il blocco degli annunci sia disattivato.

In questo tutorial imparerai alcuni dei più utili comandi della cronologia di Bash e non perderai mai traccia delle esecuzioni dei tuoi comandi.

Continua a leggere e lascia che la cronologia di Bash salvi la situazione!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri seguire, assicurati di avere quanto segue.

  • Una macchina Linux – Questo tutorial utilizza Ubuntu 20.04, ma qualsiasi distribuzione Linux funzionerà.
  • Un account utente con privilegi di root.

Visualizzazione della cronologia di Bash

La maggior parte delle distribuzioni Linux utilizza Bash come shell predefinita. Come altri ambienti shell, Bash mantiene un registro dei comandi che hai eseguito in precedenza. Questo record è conservato e mantenuto in un file chiamato ~/.bash_history anche se riavvii il sistema.

Ma come visualizzi la cronologia di Bash? Eseguendo il history comando da solo o reindirizzato con un altro comando.

1. Esegui history comando seguente per visualizzare la cronologia dei comandi.

history

Di seguito, puoi vedere l'intero elenco di comandi eseguiti dall'utente root nella sessione della shell corrente. Per impostazione predefinita, i comandi vengono visualizzati nell'elenco dal meno recente al più recente (dall'alto in basso).

L'output seguente mostra solo un piccolo frammento dell'intero file di cronologia. In molti casi, otterrai migliaia di righe di cronologia e avrai difficoltà a scorrerle. Ma continua a leggere e imparerai a personalizzare l'output nel modo desiderato nei passaggi seguenti.

2. Quindi, esegui history comando qui sotto per visualizzare l'ultimo 10 comandi registrati nella cronologia di Bash. Sostituisci 10 con il numero di righe che desideri visualizzare.

history 10

Come puoi vedere di seguito, l'output è molto più gestibile.

3. Infine, esegui il seguente comando tramite pipe con head comando per elencare solo i primi dieci (più vecchi) comandi eseguiti dall'utente root nella sessione corrente.

Come nel passaggio due, sostituisci 10 con il numero di righe che desideri visualizzare.

history 10 | head

Come mostrato di seguito, visualizzare i comandi più vecchi è utile quando si controllano i comandi che sono stati eseguiti all'inizio di una sessione.

Visualizzazione della cronologia dei comandi di Bash per data e ora

Il history comando è utile ma non mostra la data e l'ora in cui hai eseguito i comandi. Le informazioni su data e ora possono essere utili per la risoluzione dei problemi o per trovare la causa di un problema.

Fortunatamente, puoi ottenere queste informazioni impostando il formato di data e ora della cronologia di Bash nel HISTTIMEFORMAT variabile.

Esegui il comando seguente per impostare la data (%F ) e ora (%T ) formato della cronologia di Bash, dove:

  • Il %F l'opzione è per la data completa, mostrata nel formato anno-mese-giorno.
  • Il %T l'opzione è per l'ora, mostrata nel formato ora:minuti:secondi (24 ore). Tieni presente che dovrai aggiungere uno spazio dopo il %T opzione per separarlo dai comandi.
HISTTIMEFORMAT='%F, %T '

Puoi usare qualsiasi combinazione delle opzioni di formato. Ad esempio, se ti piace mostrare solo l'ora in cui hai eseguito i comandi, usa %T . Oppure usa il %F opzione Se invece vuoi mostrare solo la data.

Ora esegui il history comando da solo per visualizzare la cronologia di Bash.

history

Come puoi vedere di seguito, l'output ora include la data e l'ora in cui sono stati eseguiti i comandi.

Ricerca nella cronologia di Bash

Hai visto come visualizzare la cronologia di Bash e controllare il numero di comandi da visualizzare. Ma cosa succede se ti piace trovare un comando particolare nella cronologia di Bash e non ricordi esattamente quale fosse? Convogliare altri comandi, come grep , al history il comando farà il trucco.

Esegui il comando seguente per raccogliere (grep ) ogni riga di comandi nella cronologia di Bash che contiene il ls testo e stampa gli ultimi cinque (5 ) comandi. Il -i l'opzione dice a grep per ignorare le lettere maiuscole di ogni riga di comando.

Assicurati di sostituire ls con la parola o la frase che desideri cercare.

Per impostazione predefinita, il comando grep gestisce la distinzione tra maiuscole e minuscole, mostrando la distinzione tra maiuscole e minuscole nel file. Ad esempio, se cerchi "ls", vedrai i comandi con "ls", ma non "LS" né "Ls.".

history 5 | grep -i ls

Di seguito puoi vedere che vengono visualizzati gli ultimi cinque comandi con " ls ", indipendentemente dalla lettera maiuscola.

Esecuzione di comandi dalla cronologia di Bash con i designatori di eventi

Sai già come visualizzare i comandi dalla cronologia di Bash in diversi output. Ma lo sapevi che puoi anche eseguire comandi dalla cronologia di Bash senza riscrivere tutto?

Questa funzione consente di risparmiare tempo quando si eseguono gli stessi comandi più volte utilizzando i designatori di eventi. I designatori di eventi ti consentono di fare riferimento a un comando in base alla sua posizione nell'elenco della cronologia e sono utili quando si rieseguono comandi complessi.

Per eseguire un comando dalla cronologia di Bash, devi digitare un punto esclamativo (! ) seguito dal numero del comando da eseguire.

1. Visualizza la cronologia di Bash con tutti i metodi che hai imparato finora. Ma il tutorial esegue il history comando senza opzioni o comandi in pipe.

history

I numeri nella colonna di sinistra nell'output di seguito sono i numeri della cronologia dei comandi chiamati designatori di eventi.

Prendi nota del numero del comando che desideri rieseguire dalla cronologia di Bash, in questo caso, il comando apt install sudo.

2. Quindi, esegui il seguente comando per eseguire l'undicesimo (!11 ) comando dalla cronologia di Bash

!11

Di seguito puoi vedere che esegui il comando apt install sudo eseguendo il comando !11.

Forse ti piace eseguire a secco il comando prima di eseguirlo effettivamente. In tal caso, aggiungi l'opzione :p a uno qualsiasi dei comandi di destinazione, come mostrato di seguito. Questa opzione è utile se non vuoi rovinare le cose se esegui nuovamente un comando.

!11:p

Nota sotto il comando !11:p stampa il comando di destinazione dalla cronologia di Bash senza eseguirlo.

3. Eseguire il comando seguente (!! ) se forse vuoi eseguire l'ultimo comando nella cronologia di Bash. Questo comando è utile quando esci accidentalmente da un comando o dimentichi di eseguirne uno con sudo privilegi.

!!

Puoi vedere sotto il !! comando esegue l'ultimo comando nella cronologia di Bash, il comando history 5.

4. Ora, esegui il comando seguente per eseguire nuovamente un comando anteposto a sudo, forse il touch comando, dalla cronologia di Bash. Se hai dimenticato di anteporre il sudo in un comando precedente, questa funzione è utile se stai utilizzando un utente non root.

sudo !!

5. Infine, esegui i comandi seguenti per impostare il comando ping come ultimo comando ed esegui nuovamente l'ultimo comando nella cronologia di Bash specificando il nome del comando.

Questa funzione è utile se ricordi l'inizio del nome del comando, quindi non devi visualizzare e cercare nella cronologia di Bash.

# Ping google.com
ping google.com
# Rerun the specified command (ping)
!ping

Puoi vedere sotto il comando !ping trova il comando più recente che inizia con ping ed esegue nuovamente quel comando.

Riutilizzo di argomenti dalla cronologia di Bash

Rieseguire i comandi dalla cronologia senza ridigitare tutto è divertente, giusto? Ma cosa succede se ti piace eseguire un nuovo comando mentre usi argomenti da un altro comando? In questo caso, utilizzando il !$ event designator è utile per designare l'ultimo argomento del comando precedente.

Come gli esempi precedenti, !$ ti consente di riutilizzare argomenti lunghi o complicati senza riscriverli. Ad esempio, crei un nuovo file con un percorso e un nome file lunghi e desideri utilizzare lo stesso nome per un altro file. Quindi non devi digitarlo di nuovo. Puoi farlo digitando il seguente comando.

Esegui i comandi seguenti per creare un file con un percorso e un nome file lunghi e apri il file su un editor di testo senza ridigitare l'intero percorso del file.

# Creates a file called this_is_a_long_file_name
touch /home/ata/Documents/this_is_a_long_file_name
# Expand to the last command's arguments and 
# opens the this_is_a_long_file_name file in a text editor
nano !$

Come puoi vedere di seguito, utilizzando il !$ designatore di eventi ti fa risparmiare un sacco di tempo rieseguendo comandi con argomenti lunghi o complicati.

Conclusione

In questo articolo, hai imparato come utilizzare i comandi della cronologia di Bash per risparmiare tempo e migliorare la produttività. A questo punto, sai già come visualizzare un certo numero di comandi, cercare comandi specifici, rieseguire comandi e riutilizzare argomenti dalla cronologia di Bash.

Queste abilità torneranno utili quando si lavora sulla riga di comando. Allora perché non imparare le scorciatoie di Bash per sviluppare queste abilità e aumentare la tua produttività in un ambiente a riga di comando?


Linux
  1. È possibile tracciare i comandi integrati su Bash?

  2. Con Bash dopo "scorrere" fino a un comando precedente ... Come passare quindi al successivo in questa cronologia?

  3. Escludere alcuni dei comandi dall'essere archiviati nella cronologia di Bash?

  4. Il tutorial Ultimate Bash Array con 15 esempi

  5. Usando la cronologia di bash per ottenere un comando precedente, copialo e poi "eseguilo" ma con il comando commentato

Rivivi la storia di Linux con il desktop ROX

Cos'è Git Bash; Lavorare con i comandi Git Bash

Capire il punto esclamativo (!) In Bash?

Salva la giornata con Stellar Phoenix Windows Data Recovery

15 utili comandi integrati di Bash Shell (con esempi)

Come modificare il numero di comandi archiviati in Bash History