GNU/Linux >> Linux Esercitazione >  >> Linux

15 esempi per padroneggiare la cronologia della riga di comando di Linux

Quando si utilizza frequentemente la riga di comando di Linux, l'uso efficace della cronologia può essere un notevole aumento della produttività. In effetti, una volta che avrai imparato i 15 esempi che ho fornito qui, troverai l'utilizzo della riga di comando più divertente e divertente.

1. Visualizza il timestamp utilizzando HISTTIMEFORMAT

In genere, quando si digita la cronologia dalla riga di comando, viene visualizzato il comando # e il comando. A scopo di controllo, può essere utile visualizzare il timestamp insieme al comando come mostrato di seguito.

# export HISTTIMEFORMAT='%F %T '
# history | more
1  2008-08-05 19:02:39 service network restart
2  2008-08-05 19:02:39 exit
3  2008-08-05 19:02:39 id
4  2008-08-05 19:02:39 cat /etc/redhat-release

2. Cerca nella cronologia usando Control+R

Credo fermamente che questa potrebbe essere la caratteristica della storia più utilizzata di frequente. Quando hai già eseguito un comando molto lungo, puoi semplicemente cercare nella cronologia utilizzando una parola chiave ed eseguire nuovamente lo stesso comando senza doverlo digitare completamente. Premi CTRL+R e digita la parola chiave . Nell'esempio seguente, ho cercato rosso , che mostrava il comando precedente “cat /etc/redhat-release ” nella storia che conteneva la parola rosso.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`red': cat /etc/redhat-release
[Note: Press enter when you see your command,
which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur)

A volte vuoi modificare un comando dalla cronologia prima di eseguirlo. Per es. puoi cercare httpd , che visualizzerà servizio httpd stop dalla cronologia dei comandi, seleziona questo comando e modifica l'arresto in inizio ed eseguilo di nuovo come mostrato di seguito.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd': service httpd stop
[Note: Press either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start

3. Ripeti rapidamente il comando precedente utilizzando 4 metodi diversi

A volte potresti finire per ripetere i comandi precedenti per vari motivi. Di seguito sono riportati i 4 diversi modi per ripetere l'ultimo comando eseguito.

  1. Utilizza la freccia su per visualizzare il comando precedente e premere invio per eseguirlo.
  2. Digita !! e premi invio dalla riga di comando
  3. Digita !-1 e premi invio dalla riga di comando.
  4. Premi Ctrl+P visualizzerà il comando precedente, premi invio per eseguirlo

4. Esegui un comando specifico dalla cronologia

Nell'esempio seguente, se vuoi ripetere il comando #4, puoi fare !4 come mostrato di seguito.

# history | more
1  service network restart
2  exit
3  id
4  cat /etc/redhat-release

# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur)

5. Esegui il comando precedente che inizia con una parola specifica

Tipo ! seguite dalle lettere iniziali del comando che si desidera rieseguire. Nell'esempio seguente, digitando !ps e invio, è stato eseguito il comando precedente che inizia con ps, ovvero 'ps aux | grep yp'.

# !ps
ps aux | grep yp
root     16947  0.0  0.1  36516  1264 ?        Sl   13:10   0:00 ypbind
root     17503  0.0  0.0   4124   740 pts/0    S+   19:19   0:00 grep yp

6. Controlla il numero totale di righe nella cronologia usando HISTSIZE

Aggiungi le due righe seguenti a .bash_profile e accedi nuovamente alla shell bash per vedere la modifica. In questo esempio, nella cronologia di bash verranno memorizzati solo 450 comandi.

# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450

7. Modifica il nome del file della cronologia utilizzando HISTFILE

Per impostazione predefinita, la cronologia è archiviata in ~/.bash_history file. Aggiungi la seguente riga a .bash_profile e accedi nuovamente alla shell bash, per memorizzare il comando history nel file .commandline_warrior invece del file .bash_history. Devo ancora capire un uso pratico per questo. Vedo che questo viene utilizzato quando si desidera tenere traccia dei comandi eseguiti da terminali diversi utilizzando nomi di file di cronologia diversi.

# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior

Se hai un buon motivo per cambiare il nome del file della cronologia, condividilo con me, poiché sono interessato a scoprire come stai utilizzando questa funzione.

8. Elimina la voce ripetuta continua dalla cronologia utilizzando HISTCONTROL

Nell'esempio seguente pwd è stato digitato tre volte, quando fai la cronologia, puoi vederne tutte e 3 le occorrenze continue. Per eliminare i duplicati, imposta HISTCONTROL su ignorati come mostrato di seguito.

# pwd
# pwd
# pwd
# history | tail -4
44  pwd
45  pwd
46  pwd [Note that there are three pwd commands in history, after
executing pwd 3 times as shown above]
47  history | tail -4

# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56  export HISTCONTROL=ignoredups
57  pwd [Note that there is only one pwd command in the history, even after
executing pwd 3 times as shown above]
58  history | tail -4

9. Cancella i duplicati nell'intera cronologia utilizzando HISTCONTROL

Ignorati mostrati sopra rimuovono i duplicati solo se sono comandi consecutivi. Per eliminare i duplicati nell'intera cronologia, imposta HISTCONTROL su cancellazioni come mostrato di seguito.

# export HISTCONTROL=erasedups
# pwd
# service httpd stop
# history | tail -3
38  pwd
39  service httpd stop
40  history | tail -3

# ls -ltr
# service httpd stop
# history | tail -6
35  export HISTCONTROL=erasedups
36  pwd
37  history | tail -3
38  ls -ltr
39  service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40  history | tail -6

10. Forza la cronologia a non ricordare un comando particolare usando HISTCONTROL

Quando esegui un comando, puoi indicare alla cronologia di ignorare il comando impostando HISTCONTROL su ignorespace E digitando uno spazio davanti al comando come mostrato di seguito. Vedo molti amministratori di sistema junior entusiasti di questo, poiché possono nascondere un comando dalla cronologia. È bene capire come funziona ignorespace. Ma, come best practice, non nascondere di proposito nulla dalla cronologia.

# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
#  service httpd stop [Note that there is a space at the beginning of service,
to ignore this command from history]
# history | tail -3
67  ls -ltr
68  pwd
69  history | tail -3

11. Cancella tutta la cronologia precedente usando l'opzione -c

A volte potresti voler cancellare tutta la cronologia precedente, ma continuare a far avanzare la cronologia.

# history -c

12. Sostituisci le parole dai comandi della cronologia

Durante la ricerca nella cronologia, potresti voler eseguire un comando diverso ma utilizzare lo stesso parametro del comando che hai appena cercato.

Nell'esempio seguente, !!:$ accanto al comando vi ottiene l'argomento dal comando precedente al comando corrente.

# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg

Nell'esempio seguente, !^ accanto al comando vi ottiene il primo argomento dal comando precedente (es. comando cp) al comando corrente (es. comando vi).

# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi  !^
vi anaconda-ks.cfg

13. Sostituisci un argomento specifico con un comando specifico.

Nell'esempio seguente, !cp:2 cerca il comando precedente nella cronologia che inizia con cp e prende il secondo argomento di cp e lo sostituisce con il comando ls -l come mostrato di seguito.

# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt

Nell'esempio seguente, !cp:$ cerca il comando precedente nella cronologia che inizia con cp e prende l'ultimo argomento (in questo caso, che è anche il secondo argomento come mostrato sopra) di cp e lo sostituisce con il comando ls -l come mostrato di seguito.

# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt

14. Disabilita l'utilizzo della cronologia utilizzando HISTSIZE

Se vuoi disabilitare tutta la cronologia e non vuoi che la shell bash ricordi i comandi che hai digitato, imposta HISTSIZE su 0 come mostrato di seguito.

# export HISTSIZE=0
# history
# [Note that history did not display anything]

15. Ignora comandi specifici dalla cronologia usando HISTIGNORE

A volte potresti non voler ingombrare la tua cronologia con comandi di base come pwd e ls. Usa HISTIGNORE per specificare tutti i comandi che vuoi ignorare dalla cronologia. Si noti che l'aggiunta di ls a HISTIGNORE ignora solo ls e non ls -l. Quindi, devi fornire il comando esatto che vorresti ignorare dalla cronologia.

# export HISTIGNORE="pwd:ls:ls -ltr:"
# pwd
# ls
# ls -ltr
# service httpd stop

# history | tail -3
79  export HISTIGNORE="pwd:ls:ls -ltr:"
80  service httpd stop
81  history
[Note that history did not record pwd, ls and ls -ltr]

Lettura consigliata

Bash 101 Hacks, di Ramesh Natarajan . Passo la maggior parte del mio tempo in ambiente Linux. Quindi, naturalmente sono un grande fan della riga di comando di Bash e degli script di shell. 15 anni fa, quando stavo lavorando su diverse versioni di *nix, scrivevo molto codice sulla shell C e sulla shell Korn. Negli anni successivi, quando ho iniziato a lavorare su Linux come amministratore di sistema, ho praticamente automatizzato ogni possibile attività utilizzando lo scripting della shell Bash. Sulla base della mia esperienza con Bash, ho scritto l'eBook Bash 101 Hacks che contiene 101 esempi pratici sia sulla riga di comando di Bash che sugli script di shell. Se stavi pensando di padroneggiare Bash, fatti un favore e leggi questo libro, che ti aiuterà a prendere il controllo della tua riga di comando di Bash e degli script della shell.

Fantastici articoli su Linux

Di seguito sono riportati alcuni fantastici 15 esempi articoli che potresti trovare utili.

  • Comando Unix LS:15 esempi pratici
  • Fai una presa sul Grep! – 15 Esempi pratici di comandi Grep
  • Linux Crontab:15 fantastici esempi di Cron Job
  • Mamma, l'ho trovato! — 15 Esempi pratici di comandi Trova Linux

Linux
  1. sa Esempi di comandi in Linux

  2. w Esempi di comandi in Linux

  3. ac Esempi di comandi in Linux

  4. Esempi di comandi df in Linux

  5. du Esempi di comandi in Linux

Comando Diff in Linux con esempi

Comando della cronologia in Linux con esempi

Padroneggia la riga di comando di Linux

Utilizzo del comando Linux sed con esempi

15 Esempi pratici di comandi Grep in Linux / UNIX

Esempi di comandi id in Linux