GNU/Linux >> Linux Esercitazione >  >> Linux

Analisi della cronologia di Bash in Linux

In Bash, la history command è la chiave non solo per capire cosa hai fatto durante la sessione della shell, ma anche per la materia prima per i nuovi comandi che vuoi eseguire in futuro. History è particolarmente utile quando si esegue un server senza testa. Se non hai il mouse, non puoi copiare e incollare facilmente l'ultima metà di un comando complesso per eseguirne una versione leggermente modificata, quindi devi digitare tutto da capo, a meno che non usi history modificatori.

Tieni la cronologia fuori dalla tua cronologia

Prima di parlare di storia, ecco un consiglio per mantenere la history letterale voci fuori dalla cronologia.

Il problema con l'utilizzo della history comando per rivedere la tua history è che aggiunge una voce alla tua history file. Queste voci non solo ingombrano la tua history , ma fanno anche regredire ogni riga "più lontano" dalla tua posizione attuale.

$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$ history
102 cd example-project
103 ls
104 touch doc/LICENSE
105 history
$

Un bersaglio mobile è difficile da rintracciare e difficile da colpire, quindi se hai intenzione di usare seriamente la tua history per velocizzare le tue interazioni con Bash, aggiungi questa configurazione al tuo .bashrc file:

export HISTCONTROL=$HISTCONTROL:ignorespace

Questa configurazione impedisce che qualsiasi comando preceduto da uno spazio venga aggiunto alla tua history di Bash .

$ cd example-project
$ ls
bin doc src
$ touch doc/LICENSE
$   history
102 cd example-project
103 ls
104 touch doc/LICENSE
$

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]

Eventi storici

La struttura di base della history della shell inizia con un elenco di events . Un event è tutto ciò che hai inserito nella shell, seguito da Return o Enter chiave. Ogni event viene assegnato un numero di indice (un numero di riga) e puoi visualizzare e richiamare gli eventi utilizzando event designators .

Ad esempio, per richiamare un elemento pubblicitario specifico nella history della shell , usa un punto esclamativo (! ) seguito immediatamente dal numero della history riga:

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Puoi anche fare riferimento a comandi passati relativi alla loro posizione nella history elenco. Ad esempio, per eseguire un comando due righe in passato, pensa al tuo prompt attuale come uno maggiore dell'ultima riga in history , quindi sottrarre il numero della riga che si desidera eseguire dal numero di riga corrente. In questo esempio, riga 103 è la linea di destinazione e 105 è il prompt corrente (per un delta di 105-103=2 ):

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Puoi salvare un intero personaggio se vuoi solo rieseguire l'ultima riga. L'espressione !! e !-1 sono sinonimi:

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Notare che il comando stesso viene ripetuto nell'output quando history si ripete. Per brevità e chiarezza, tale output è escluso dai restanti esempi in questo articolo.

Designatori di parole

Bash ha funzioni che ti aiutano ad analizzare la tua history utilizzando word designators e strumenti per consentirti di modificare i comandi nella tua history . Potrebbe essere utile pensare alla history della tua shell come un array indicizzato o anche come un grande oggetto della cronologia costituito da molti elementi più piccoli. Ogni parola su ogni riga della tua history è indicizzato, a partire da 0 (che di solito è il comando, ma i comandi in più parti e i prefissi delle variabili di ambiente sono eccezioni degne di nota). Puoi accedere a ciascun indice aggiungendo i due punti (: ) al riferimento di riga, seguito immediatamente dal word designator .

Ecco un esempio di accesso alla prima parola:

$   history
102 cd example-project
103 ls
104 touch README
$ !103
ls
bin doc README src

Poiché afferrare il primo argomento è comune, il circonflesso (o il "cappello":^ ) è un alias per :1 .

$ echo foo
$ !!^
foo

All'altra estremità dello spettro, il dollaro ($ ) il segno rappresenta l'argomento finale:

$ echo foo bar baz
$ echo !!$
baz

Intervalli di parole

Non devi accontentarti di un solo argomento. Puoi anche estrarre intervalli di un indice. Tutti gli argomenti tranne lo zero sono disponibili con un asterisco (* ).

$ echo foo bar baz
$ touch !!*
$ ls
foo bar baz

Questo è in realtà un sinonimo di 1-$ (cioè dal primo argomento all'ultimo argomento). Come ci si potrebbe aspettare, è possibile definire arbitrariamente il proprio intervallo utilizzando questa notazione non abbreviata. Questo esempio fa riferimento al secondo al quinto argomento, ignorando il primo e gli ultimi due argomenti:

$ cp foo a.sh spacer.sh rev.bin sync.py baz ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-5
$ ls -l --classify
a.sh*  baz  foo  rev.bin*  spacer.sh*  sync.py*

Se devi solo escludere la singola parola finale in un indice, puoi fornire un intervallo senza terminazione:

$ cp foo a.sh spacer.sh ~/dest
$ cd ~/dest
$ chmod ug+x !-2:2-
$ ls -l --classify
a.sh*  foo  spacer.sh*

Utilizzo della cronologia per velocità e precisione

La history il comando non riguarda sempre la riduzione delle pressioni dei tasti. Puoi usare la tua history di Bash per evitare l'esclusione accidentale di un file o una cartella da un'operazione importante o di errori di ortografia del nome di un file. Mettiti comodo con la history comando per interazioni Bash più solide.

[ Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente. ]


Linux
  1. Come usare i comandi della cronologia di Bash

  2. Rendi invernale il tuo prompt Bash in Linux

  3. Come cancellare un comando specifico dalla cronologia di Bash in Linux

  4. Come abbreviare il prompt di Bash in Linux?

  5. 15 Esempi di espansione della cronologia di Linux Bash che dovresti conoscere

Comando della cronologia in Linux (Cronologia di Bash)

Comando della cronologia in Linux con esempi

Come evitare voci duplicate nella cronologia di Bash in Linux

Come abilitare il timestamp nella cronologia di Bash in Linux

Come installare Mcfly su Linux.

Come cancellare la cronologia di Bash in Linux e Mac