Conchiglia

Ottenere il meglio dalla storia di Linux Bash

Ottenere il meglio dalla storia di Linux Bash

Riga di comando di Linux: il Terminale, come tutte le shell, mantiene una cronologia dei comandi eseguiti in passato da un utente. Questa cronologia è persistente e rimane in memoria anche quando riavviamo il nostro sistema. Questi comandi memorizzati possono essere richiamati e riutilizzati da noi nel modo più ottimale per utilizzare in modo efficiente la funzione di salvataggio della cronologia della maggior parte delle shell.

La bash di Linux viene fornita con un comando molto potente chiamato "storia". Questo comando è un comando bash integrato, utilizzato per estrarre le informazioni cronologiche sui comandi che sono stati eseguiti dagli utenti Linux in tutte le sessioni precedenti. In questo tutorial, ti permetteremo di ottenere il meglio dalla tua cronologia della shell imparando l'uso corretto del comando cronologia. Linux memorizza la cronologia dei comandi per un determinato utente in un file ~/.bash_history per impostazione predefinita.

Useremo l'applicazione Terminale di Linux per eseguire i comandi menzionati in questo tutorial.

Visualizzazione dell'intera cronologia

Un utente può visualizzare l'intera cronologia dei suoi comandi shell dal file di cronologia salvato esclusivamente per quell'utente utilizzando il seguente semplice comando:

$ storia

La cronologia verrà stampata sullo schermo nel seguente formato predefinito:

Nell'immagine sopra, puoi vedere un elenco di tutti i comandi con un numero assegnato a ciascuno di essi. Il comando numero 1 corrisponde al primo comando che hai eseguito e l'ultimo comando numerato rappresenta l'ultimo comando che hai eseguito.

Se hai eseguito molti comandi da quando hai usato bash, osserverai che ci saranno centinaia e persino migliaia di quei comandi visualizzati qui. Per accedere ad alcuni comandi rilevanti, puoi filtrare i risultati visualizzati dalla funzione di cronologia. Puoi anche personalizzare il comando della cronologia per mostrare un numero specifico di comandi per te.

Filtraggio dell'output della cronologia

Se desideri filtrare l'output della cronologia in base a una parola chiave specifica che potresti aver utilizzato nei comandi precedenti, puoi utilizzare il comando cronologia come segue:

$ storia | grep [parola chiave]

Esempio: In questo esempio, voglio visualizzare solo i comandi ping che ho mai eseguito nella shell. Pertanto, userò il seguente comando:

$ storia | grep ping

Puoi vedere che il mio output ora mostra solo i comandi inclusa la mia parola chiave di ricerca "ping"Pubblicità

Visualizzazione di una serie di comandi recenti

Puoi anche visualizzare un numero specifico di comandi, ad esempio:

O

N Numero di comandi recenti

È possibile visualizzare un numero specifico di comandi eseguiti di recente tramite il seguente comando:

$ storia | coda -n

Esempio:

In questo esempio, voglio visualizzare gli ultimi 3 comandi che ho eseguito, con la parola chiave 'ping':

$ storia | grep ping |coda -3

L'output mostra solo i 3 comandi ping recenti invece dell'intera cronologia

N Numero di comandi più vecchi

È possibile visualizzare un numero specifico dei comandi di esecuzione più vecchi tramite il seguente comando:

$ storia | testa -n

Esempio:

In questo esempio, voglio visualizzare i 3 comandi più vecchi che ho eseguito, con la parola chiave "ping":

$ storia | grep ping |testa -3

L'output mostra solo i 3 comandi ping più vecchi invece dell'intera cronologia

Elenca tutti i comandi con data e timestamp

Se desideri visualizzare la cronologia dei comandi insieme alla data e al timestamp, utilizza il seguente comando di esportazione:

$ export HISTTIMEFORMAT="%F, %T"

Ora, quando desideri visualizzare la cronologia, esegui semplicemente il comando cronologia per vedere l'output nel seguente formato:

Si prega di notare che questo cambiamento di formato è temporaneo e verrà ripristinato allo standard precedente quando si chiude la sessione.

Comandi di navigazione dalla cronologia

Mentre sei sulla riga di comando, puoi navigare tra i comandi eseguiti in precedenza e anche richiamare alcuni comandi usati di recente fornendo una parola chiave.

Scorrere i comandi

Puoi utilizzare i seguenti controlli da tastiera per navigare tra i comandi della cronologia

Freccia su/Ctrl+PUsando questi controlli, puoi visualizzare il comando precedente che hai usato. Puoi premere questi controlli più volte per tornare a un comando specifico nella cronologia.
Freccia giù/Ctrl+NUsando questi controlli, puoi visualizzare il comando successivo che hai usato. Puoi premere questi controlli più volte per passare a un comando specifico nella cronologia.
Alt+RSe modifichi un comando, che hai estratto dalla cronologia, su una riga corrente, puoi utilizzare questo controllo per ripristinarlo al comando originale.

Richiamo dei comandi

Puoi richiamare, eseguire o scegliere di non eseguire un comando specifico dalla cronologia, utilizzando i seguenti controlli:

Ctrl+RUsando questo controllo, puoi richiamare un comando dalla cronologia specificando una stringa di ricerca.
Ctrl+OUsando questo controllo, puoi eseguire il comando che hai richiamato tramite Ctrl+R
Ctrl+GUsando questo controllo, puoi uscire dalla cronologia senza eseguire il comando che hai richiamato tramite Ctrl+R

Esempio:

In questo esempio, ho premuto ctrl+R e quindi fornito la stringa di ricerca "ar". La cronologia mostrava il comando 'arch'.

Quando ho eseguito il comando "arch" premendo ctrl+O, è stata visualizzata l'architettura della CPU del mio sistema:

Utilizzo della cronologia di Bash

La vera magia della cronologia di bash consiste nell'usare vari comandi e personalizzare il comando della cronologia stesso per sfruttare al meglio la funzionalità della cronologia:

Esecuzione di comandi dalla cronologia

$ !#

Esempio:

Qui sto eseguendo il comando numero 95 dalla mia cronologia:

$ !95

L'output mostra il risultato di 'lscpu' che è stato elencato come numero di comando 95 nella mia cronologia bash. Questo comando mostra le specifiche della mia CPU e del sistema operativo.

$ !!

Esempio:

Qui puoi vedere che ho eseguito il comando 'arch'. Eseguendo il comando sopra menzionato, posso eseguire nuovamente il comando "arch" per visualizzare l'architettura della mia CPU come segue:

$ ![parola chiave]

Esempio:

Userò il seguente comando per rieseguire l'ultimo comando con la parola chiave 'dconf' al suo interno:

$ !dconf

Puoi riconfermare nell'immagine seguente che è stato l'ultimo comando dconf che ho eseguito.

Utilizzo di argomenti da comandi precedenti

Linux bash ti consente di eseguire un nuovo comando utilizzando gli argomenti del comando precedente. È particolarmente utile quando si desidera evitare di riscrivere argomenti lunghi o complicati. È possibile utilizzare il seguente comando per questo scopo:

Usando l'ultimo argomento del comando precedente

$ [Comando] !$

La variabile !$ contiene l'ultimo argomento del comando precedente stored.

Esempio:

In questo esempio, creerò un file con un nome lungo.

Nano [nome lungoOfaFile]

Lo copierò quindi in un'altra posizione evitando di digitare nuovamente il nome lungo come segue:

Cp !$ [cartella di destinazione]

Puoi vedere che sono stato in grado di copiare un file senza ridigitare il nome del file usando la variabile !$

Usando il primo argomento del comando precedente

A volte, solo il primo argomento del comando precedente è utile in quello attuale.

In tal caso, puoi utilizzare il seguente comando:

$ [comando] !^

Esempio:

Nell'esempio seguente, ho eseguito il comando ping specificando il nome host e un conteggio come argomenti. Ora voglio usare il nome host (primo argomento) anziché 2 (ultimo argomento) nel mio nuovo comando. Userò il seguente comando per questo scopo:

$ping !^

Usando tutti gli argomenti del comando precedente

Puoi anche usare tutti gli argomenti del comando precedente usando il seguente comando:

$ !*

Utilizzo di un argomento da un comando di cronologia

Puoi anche usare i comandi dalla tua cronologia riutilizzando i loro argomenti. Utilizzare il seguente comando per questo scopo:

$ [comando] ![parola chiave]:#

Esempio:

$ eco !cp: 2

Questo comando avrà i seguenti parametri:

comando: eco

Parola chiave: cp

#:2(secondo argomento del comando)

Il seguente output mostra il secondo argomento dell'ultimo comando cp che ho eseguito:

Utilizzo di tutti gli argomenti da un comando di cronologia

Il seguente comando memorizzerà tutti gli argomenti del comando cronologia cercato e li utilizzerà nel comando corrente:

$ comando ![parola chiave]:*

Esempio:

Nel seguente comando, stamperò tutti gli argomenti dell'ultimo comando cp usando il comando echo come segue:

$ eco ![cp]:*

Modifica ed esecuzione di comandi precedenti

Se hai digitato male un comando o vuoi rieseguire un comando modificando del testo al suo interno; seguente è il modo per farlo:

$ ^[testo precedente]^[testo nuovo]

Esempio:

Ho digitato male il comando "grep" come "gep" e ora voglio eseguire il comando correggendo il testo:

$ ^gep^grep

Ora puoi vedere che il mio comando corretto verrà eseguito correttamente come segue:

Cancellazione della cronologia

Per cancellare la cronologia della tua bash, usa il seguente comando:

$ cronologia -c

Questo comando cancellerà la cronologia e rimuoverà tutti i contenuti dal file ~/.bash_history

In questo tutorial abbiamo appreso che mentre stampare l'intero contenuto della cronologia potrebbe non essere così utile, l'ottimizzazione dell'output tramite i comandi che abbiamo appreso è il vero punto di svolta. Fare pratica insieme a questo articolo ti consentirà di visualizzare i comandi esatti che desideri, rieseguire e riutilizzare quei comandi e anche utilizzare gli argomenti dei comandi eseguiti in precedenza per ottimizzarne di nuovi.

Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...
SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...
Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...