Úvodná » ako » 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

    Bash shell je štandardné terminálové prostredie, ktoré je súčasťou väčšiny linuxových distribúcií a je súčasťou systému MacOS a je k dispozícii pre 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 tlačidlo viackrát, aby ste prechádzali späť 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 mohli prejsť dopredu prostredníctvom 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 hľadanie 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ť, aby ste vyhľadali svoju históriu 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.

    Zobrazte históriu vašich basov

    Môžete vytlačiť celú históriu bash na obrazovku spustením jediného príkazu:

    histórie

    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.

    Môžete robiť všetko, čo sa vám páči s výstupom. Napríklad, môžete to potrubím na greppríkaz na vyhľadanie histórie príkazov.

    história grep your_search

    Mohli by ste ju tiež napojiť na chvost 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.

    história ocas -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 histórie Príkaz. Zadáte nasledujúci príkaz.

    !12

    Ak chcete spustiť posledný spustený príkaz, zadajte nasledujúci príkaz. 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 .

    Toto rozšírenie funguje kdekoľvek na linke. Môžete pridať čokoľvek, čo sa vám páči pred alebo po !! 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, dávajú jej oprávnenia root. To je obzvlášť užitočné, ak zabudnete pridať  sudo pred spustením príkazu.

    sudo !!

    Alebo môžete napríklad znova spustiť predchádzajúci príkaz a nakresliť jeho výstup na grep na vyhľadanie nejakého textu.

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

    !text

    Ak ste nedávno spustili príkaz, ktorý začal ping, môžete ho spustiť nasledovným príkazom. 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 : p na ktorékoľvek z vyššie uvedených rozšírení a bash vytlačí príkaz do terminálu 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ť.

    príkaz $!

    Povedzme napríklad, že ste spustili príkaz dotykom / 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 ping google.com -c 4 a potom spustite ping! $ , toto by sa 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ý:

    príkaz! ^

    Takže ak ste bežali ping google.com -c 4 a potom bežal ping! ^ , bash 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é:

    príkaz! *

    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.

    príkaz! abc: #

    Napríklad sme spustili príkaz sudo hostiteľské meno 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 keď bežíme echo: 2 , bash bude hľadať späť nájsť posledný príkaz začínajúci "su"A vyplňte druhý argument, ktorý je"ubuntu".

    Ďalšie triky fungujú, 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:

    príkaz! 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 ňom s textom"xyz".

    ^ Abc ^ xyz

    Ak ste napríklad náhodou bežali ping gogle.com, potom by ste mohli bežať ^ ^ Gog goog a bash spustil príkaz ping google.com namiesto.

    Kde je uložená vaša história a ako ju vyčistiť

    Balík bash ukladá históriu spustených príkazov do súboru histórie používateľského účtu na ~ / .bash_history v predvolenom nastavení. Ak je napríklad vaše užívateľské meno 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 ďalší 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á svoj 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ým sa vymaže obsah súboru .bash_history vášho používateľského účtu:

    história -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 riadi HISTSIZEvariabilné. 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 bash nebude ukladať žiadne záznamy histórie, pokiaľ nespustí príkaz ako HISTSIZE = 1000 nastaviť ho späť na určitý počet záznamov.

    Ako ignorovať priestory a duplikáty

    Bash umožňuje ignorovať položky histórie, ktoré začínajú medzerou, ak nastavíte HISTCONTROLpremenná na ignorespace.

    HISTCONTROL = ignorespace

    Pred zadaním príkazu zadajte medzeru pred jeho spustením v balíku 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 spustenie príkazov 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 HISTCONTROL na ignoredups.

    HISTCONTROL = ignoredups

    Použiť oba ignorespace a ignoredups funkciu, nastavte položku HISTCONTROL premenná na ignoreboth.

    HISTCONTROL = ignoreboth

    Všimnite si, že nastavené premenné bash budú pre aktuálnu reláciu pretrvávať. Budete ich musieť pridať do súboru .bashrc svojho používateľského konta, aby sa tieto hodnoty automaticky nastavili v každej začiatku relácie bash, ak chcete, aby.

    Bash shell je komplexný nástroj s mnohými možnosťami, ako sú tieto. Prečítajte si podrobnejšie informácie a ďalšie pokročilé triky, ktoré môžete použiť v sekcii Bash History History a Expansion History v oficiálnej príručke bash..