Bash History

Skrevet af: Patrick Kerwood

I dette indlæg vil jeg kigge lidt på Bash’s history function. Med disse Bash ninja tricks vil du helt sikkeret gøre dit terminal liv lettere. Med Bash history kan du se de sidste 500 kommandoer du har kørt og hurtigt kopier og kører dem igen.

Du kan se en liste med de sidste 500 kørte kommando’er, ved at skrive følgende.
history

Ud for hver kommando ser du et nummer. Se nedenstående eksempel.
260 sudo service apache2 stop
261 ps aux | grep 8518
262 ps aux | grep 8519
263 ps aux | grep 3519
264 sudo service apache2 start
265 kill 3518
266 kill 3519

For at kører en kommando der er i historikken, skriver du udråbstegn efterfulgt af nummeret.
!260
Du kan også kører fx. den 3. sidste kommando ved at skrive udråbstegn, minus og 3. I eksemplet nedenunder ville den kører sudo service apache2 start.
!-3

 
En af mine favorit Bash ninja tricks er søge funktionen. Tryk CTRL+R for at starte den. Begynd med at skrive starten på den kommando du vil finde og den vil auto-complete kommandoen. Jeg bruger den ofte hvis jeg ved at jeg har brugt en lidt nørklet kommando i fortiden og ikke gider skrive den igen.
(reverse-i-search)`sudo service': sudo service apache2 start

 
Et andet af mine favorit Bash ninja tricks er dobbelt udråbstegn. Hvem kender ikke situationen hvor man skriver en lang kommando og glemmer at skrive sudo foran. Det kan godt være det kun tager 7 sekunder at at trykke pil-op, pil-til-venstre for at nå hen til starten og skrive sudo. Men det er 7 lange sekunder.

Med dobbelt udråbstegn gentager du den sidst kørte kommando. Og med dem kan du lyn hurtigt smide sudo foran din sidste kommando.
sudo !!

 
Lige som man kan kopier sin sidste kommando, kan man også kopier sin sidst brugte argument, ved at bruge udråbsteg og dollar tegnet (!$). I eksemplet nedenunder lister jeg først filerne i en mappe, men efterfølgende vil jeg gerne change directory til den.
pk@linuxbloggen.dk:~$ ls /etc/php5/apache2/conf.d/
curl.ini mysqli.ini mysql.ini pdo.ini pdo_mysql.ini suhosin.ini xmlrpc.ini

pk@linuxbloggen.dk:~$ cd !$
cd /etc/php5/apache2/conf.d/
pk@linuxbloggen.dk:/etc/php5/apache2/conf.d$

 
Hvis man bruger 2 argumenter efter en kommando kan man kopier, den første dem, med udråbstegn og et tegn jeg ikke lige kender navnet på :).. (!^). Et eksemplet neden under vil jeg gerne tage en backup af min default fil inden jeg redigerer i den.

root@linuxbloggen.dk:~$ cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.bak
root@linuxbloggen.dk:~$ nano !^
nano /etc/apache2/sites-available/default

Bemærk at i ovenstående eksempel er kommandoerne kørt med root. Hvis jeg havde brugt sudo istedet ville !^ kopier cp istedet, da det jo så er den der er det 2. argument i kommandoen.

 

Konfiguration

Man kan selvfølgelig konfigurere den efter behov og der er nogle indstillinger der er værd at bruge 10 min. på.

En af de mere irriterende ting ved Bash history er dubletter. Hvis man kører den samme kommando flere gange vil den også stå flere gange i din history. Du kan deaktivere dubletter med følgende kommando.
HISTCONTROL=ignoredups

Hvis du nogle gange kører kommandoer du ikke er interesseret i at skal stå i din history, kan du aktivere “ignore space”. Med “ignore space” aktiveret, starter du din kommando med et mellemrum og den vil ikke figurer i din history.
HISTCONTROL=ignorespace

Hvis du vil have begge af de ovenstående indstillinger aktiveret, skriver følgende kommando.
HISTCONTROL=ignoreboth

For at slette hele din history:
history –c

Hvis du slet ikke ønsker at history skal gemme dine kommandoer:
HISTSIZE=0

For at aktivere history igen, ændre du 0 til 500, eller 1000 efter behov.
HISTSIZE=500

 


14 mar 2013   | Alle · Bash · Ny til Linux

Leave a Reply