Ako používať svoju históriu Bash v termináli Linux alebo MacOS

Obsah:

Ako používať svoju históriu Bash v termináli Linux alebo MacOS
Ako používať svoju históriu Bash v termináli Linux alebo MacOS

Video: Ako používať svoju históriu Bash v termináli Linux alebo MacOS

Video: Ako používať svoju históriu Bash v termináli Linux alebo MacOS
Video: The Apple Watch ECG found something unexpected about my heart - YouTube 2024, Apríl
Anonim
Balík bash je štandardné terminálové prostredie, ktoré je súčasťou väčšiny linuxových distribúcií, ktoré sú súčasťou systému macOS a sú dostupné na inštaláciu v systéme Windows 10. Pamätá si zadávané príkazy a ukladá ich do súboru s históriou. Pravdepodobne viete niekoľko základov histórie bash, ale je to oveľa silnejšie, ako by ste si mohli uvedomiť.
Balík bash je štandardné terminálové prostredie, ktoré je súčasťou väčšiny linuxových distribúcií, ktoré sú súčasťou systému macOS a sú dostupné na inštaláciu v systéme Windows 10. Pamätá si zadávané príkazy a ukladá ich do súboru s históriou. Pravdepodobne viete niekoľko základov histórie bash, ale je to oveľa silnejšie, ako by ste si mohli uvedomiť.

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.
Image
Image

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.

V produkte môžete urobiť všetko, čo sa vám páči. Napríklad by ste ho mohli priviesť do
V produkte môžete urobiť všetko, čo sa vám páči. Napríklad by ste ho mohli priviesť do

grep

príkaz na vyhľadanie histórie príkazov.

history | grep your_search

Mohli by ste ju tiež potopiť
Mohli by ste ju tiež potopiť

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

Image
Image

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

Ak chcete znovu spustiť posledný spustený príkaz, zadajte nasledovné. To má rovnaký účinok ako stlačenie raz šípky hore, čím zobrazíte predchádzajúci príkaz a potom stlačíte kláves Enter.
Ak chcete znovu spustiť posledný spustený príkaz, zadajte nasledovné. To má rovnaký účinok ako stlačenie raz šípky hore, čím zobrazíte predchádzajúci príkaz a potom stlačíte kláves Enter.

!!

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

This expansion works anywhere on the line. You can add anything you like before or after
This expansion works anywhere on the line. You can add anything you like before or after

!!

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

Ak chcete vyhľadať príkaz v histórii a spustiť ho, zadajte nasledujúce. Tým sa spustí posledný príkaz, ktorý zodpovedá zadanému textu:
Ak chcete vyhľadať príkaz v histórii a spustiť ho, zadajte nasledujúce. Tým sa spustí posledný príkaz, ktorý zodpovedá zadanému textu:

!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

Môžete pridať a
Môžete pridať a

: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

Image
Image

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.

Tým sa vyplní iba posledný argument. Takže, ak bežíte
Tým sa vyplní iba posledný argument. Takže, ak bežíte

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'

Ak chcete vyplniť všetky argumenty použité v predchádzajúcom príkaze namiesto jediného argumentu, použite nasledovné:
Ak chcete vyplniť všetky argumenty použité v predchádzajúcom príkaze namiesto jediného argumentu, použite nasledovné:

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.

Môžete použiť rovnaký trik, ktorý používate na spustenie príkazov z histórie, aby ste od nich dostali argumenty. Stačí použiť nasledujúci formulár.
Môžete použiť rovnaký trik, ktorý používate na spustenie príkazov z histórie, aby ste od nich dostali argumenty. Stačí použiť nasledujúci formulár.

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:*

Image
Image

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.

Image
Image

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

Bash pamäta iba na obmedzený počet príkazov v predvolenom nastavení, čím zabraňuje príliš veľkému súboru histórie. Počet záznamov o histórii, ktoré si pamätajú, sa kontroluje pomocou
Bash pamäta iba na obmedzený počet príkazov v predvolenom nastavení, čím zabraňuje príliš veľkému súboru histórie. Počet záznamov o histórii, ktoré si pamätajú, sa kontroluje pomocou

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.

Image
Image

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.

Bash tiež umožňuje ignorovať duplicitné príkazy, ktoré môžu neporiadok vašej histórie. Ak to chcete urobiť, nastavte
Bash tiež umožňuje ignorovať duplicitné príkazy, ktoré môžu neporiadok vašej histórie. Ak to chcete urobiť, nastavte

HISTCONTROL

na

ignoredups.

HISTCONTROL=ignoredups

Použiť oba
Použiť oba

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.

Odporúča: