Klávesové skratky
Ak chcete prechádzať históriou bash, môžete použiť niekoľko užitočných klávesových skratiek. Stlačte tieto skratky a príkazy, ktoré ste predtým používali, sa objavia na výzve.
- Šípka hore alebo Ctrl + P: Prejdite na predchádzajúci príkaz v histórii. Stlačte niekoľkokrát tlačidlo, aby ste mohli prechádzať pomocou príkazov, ktoré ste použili.
- Šípka dole alebo Ctrl + N: Prejdite na ďalší príkaz v histórii. Stlačte tlačidlo viackrát, aby ste prešli dopredu pomocou príkazov, ktoré ste použili.
- Alt + R: Vráťte všetky zmeny príkazu, ktorý ste vybrali z histórie, ak ste ho upravili na aktuálnom riadku.
Bash má tiež špeciálny režim "Recall", ktorý môžete použiť na vyhľadávanie príkazov, ktoré ste predtým spustili, skôr než ich posúvať jeden po druhom.
- Ctrl + R: Vyvolajte posledný príkaz zodpovedajúci zadaným znakom. Stlačte túto skratku a začnite písať pre vyhľadanie histórie bash pre príkaz.
- Ctrl + O: Spustite príkaz, ktorý ste našli pomocou klávesov Ctrl + R.
- Ctrl + G: Nechajte režim vyhľadávania histórie bez spustenia príkazu.
Pozrite si svoju históriu Bash
Môžete vytlačiť celú históriu bash na obrazovku spustením jediného príkazu:
history
Zobrazí sa zoznam všetkých príkazov v histórii bash spolu s číslom vľavo od každého. Príkaz s "1" vedľa neho je najstarším príkazom v histórii bash, zatiaľ čo príkaz s najvyšším číslom je posledný príkaz.
grep
príkaz na vyhľadanie histórie príkazov.
history | grep your_search
tail
príkaz zobraziť iba malý počet posledných spustených príkazov. Napríklad nasledujúci príkaz zobrazí posledné 5 položiek v histórii.
history | tail -5
Spustite príkazy z histórie
Bash môže rýchlo rozšíriť predchádzajúce príkazy alebo ich rozbaliť a upraviť. Táto funkcia je známa ako "rozšírenie histórie" a používa výkričník, známy ako "bang". Jednoducho ich napíšte na výzvu a stlačte Enter, aby ste ich spustili, ako keby ste spustili iný príkaz.
Ak chcete spustiť konkrétny príkaz z histórie podľa jeho čísla, použite nasledujúci príkaz:
!#
Povedzme napríklad, že ste chceli spustiť 12. príkaz z vašej histórie bash. To je príkaz s "12" naľavo od neho, keď spustíte
history
Príkaz. Zadáte nasledujúci príkaz.
!12
!!
Môžete tiež odkazovať na príkaz určitého počtu riadkov späť. Napríklad,
!-2
spustil druhý na posledný príkaz, ktorý ste spustili.
!!
znamená to isté ako
!-1
!!
alebo akýkoľvek iný výraz v tejto časti. Napríklad môžete zadať nasledujúci príkaz na opätovné spustenie posledného spusteného príkazu
sudo
čo jej dáva koreňové privilégiá. To je obzvlášť užitočné, ak zabudnete pridať
sudo
pred spustením príkazu.
sudo !!
Môžete napríklad znova spustiť predchádzajúci príkaz a vytlačiť jeho výstup do adresy grep, aby ste vyhli nejaký text.
!! | grep text
!text
Ak ste nedávno spustili príkaz, ktorý začal
ping
môžete spustiť nasledujúci príkaz na jeho vyhľadanie. Toto vyhľadá históriu späť, nájde najnovší príkaz, ktorý začína na"
pi
A okamžite ho spustite:
!pi
:p
na ktorékoľvek z vyššie uvedených rozšírení a bash vytiskne príkaz na terminál bez toho, aby ho spustil. Toto je užitočné, ak chcete potvrdiť, že vyberáte správny príkaz skôr, než ho spustíte.
!12:p
!!:p
!text:p
Znovu použite argumenty z histórie
Bash tiež umožňuje spustiť nový príkaz, ale používa argumenty z predchádzajúcich príkazov vo vašej histórii. To vám môže pomôcť rýchlo opätovne použiť dlhé alebo zložité argumenty bez toho, aby ste ich museli opätovne zadávať.
command !$
Povedzme napríklad, že ste spustili príkaz
touch /home/chris/some_long_file_name_you_dont_want_to_type_again
Teraz chcete spustiť príkaz
nano /home/chris/some_long_file_name_you_dont_want_to_type_again
Skôr než zadáte celú vec od začiatku, môžete spustiť:
nano !$
!$
by bash automaticky vyplnil posledný argument z predchádzajúceho príkazu.
ping google.com -c 4
a potom spustite
ping !$
toto by sa len rozšírilo na"
ping 4
“.
Ak chcete túto situáciu opraviť, môžete použiť nasledujúci trik na rozbalenie prvého argumentu na riadku ako na posledný:
command !^
Takže ak ste bežali
ping google.com -c 4
a potom bežal
ping !^
bash by rozšírilo toto na"
ping google.com'
command !*
Takže ak ste bežali
ping !*
namiesto toho by bash automaticky vyplnil všetky argumenty, ktoré ste použili v predchádzajúcom príkaze.
command !abc:#
Napríklad sme spustili príkaz
sudo hostname ubuntu
skôr. Ak spustíme nasledujúci príkaz, bash vyhľadá históriu dozadu a nájde posledný príkaz začínajúci písmenami, ktoré zadávame, a vyplníme zadaný argument. Takže, keby sme bežali
echo !su:2
bash vyhľadá späť, aby našiel posledný príkaz začínajúci"
su
"A vyplňte druhý argument, ktorý je"
ubuntu
“.
Ďalšie triky pracujú, ako by ste mohli očakávať. Napríklad nahradenie čísla hviezdičkou, známej ako zástupný znak, spôsobuje, že bash vyplní všetky argumenty z príkazu:
command !abc:*
Prerušte predchádzajúci príkaz a upravte ho
Bash tiež umožňuje opakovať predchádzajúci príkaz a špecifikovať niečo, čo by sa malo zmeniť. To môže byť užitočné pre opravu preklepu v príkaze. Napríklad nasledujúci príkaz zopakuje predchádzajúci príkaz a nahradí text"
abc
"V texte s textom"
xyz
“.
^abc^xyz
Napríklad, ak ste omylom bežali
ping gogle.com
potom by ste mohli bežať
^gog^goog
a bash spustil príkaz
ping google.com
miesto.
Kde je vaša história uložená a ako ju vyčistiť
Balík bash ukladá históriu príkazov, ktoré ste spustili v súbore histórie používateľského účtu, na ~ /.bash_history v predvolenom nastavení. Ak je vaše používateľské meno napríklad bob, tento súbor nájdete na /home/bob/.bash_history.
Pretože vaša história je uložená v súbore, pretrváva medzi reláciami. Môžete spustiť niektoré príkazy, odhlásiť sa, vrátiť sa nasledujúci deň a tieto príkazy budú stále v súbore histórie pripravené na zobrazenie a použitie. Každý používateľský účet má vlastný súbor histórie so samostatnou históriou príkazov.
Ak chcete vymazať históriu bash, môžete spustiť nasledujúci príkaz. Týmto sa vymaže obsah súboru.bash_history vášho používateľského účtu:
history -c
HISTSIZE
variabilné. Predvolená hodnota je zvyčajne 500 alebo 1000 položiek. Môžete spustiť nasledujúci príkaz na zobrazenie veľkosti histórie bash vo vašom systéme.
echo $HISTSIZE
Ak chcete históriu nastaviť na nulu, spustite nasledujúci príkaz.
HISTSIZE=0
Pre aktuálnu reláciu nebude bash ukladať žiadne položky histórie, ak nespustíte príkaz ako
HISTSIZE=1000
nastaviť ho späť na určitý počet záznamov.
Ako ignorovať medzery a duplikáty
Bash umožňuje ignorovať položky histórie, ktoré začínajú medzerou, ak nastavíte
HISTCONTROL
premenná na
ignorespace.
HISTCONTROL=ignorespace
Pred zadaním príkazu zadajte medzeru pred jeho spustením do balíka bash a príkaz beží normálne, ale v histórii sa nezobrazí, ak máte povolenú túto premennú. To vám umožní udržať históriu trochu čistejšie a zvoliť si príkazy bez toho, aby sa zobrazovali vo vašej histórii.
HISTCONTROL
na
ignoredups.
HISTCONTROL=ignoredups
ignorespace
a
ignoredups
funkciu, nastavte položku
HISTCONTROL
premenná na
ignoreboth.
HISTCONTROL=ignoreboth
Upozorňujeme, že nastavené premenné bash budú pre aktuálnu reláciu pretrvávať. Budete ich musieť pridať do súboru.bashrc vášho používateľského účtu, aby ste tieto hodnoty automaticky nastavili v každej spustenom relácii bash, ak to chcete.