Domača » kako » Kako uporabljati Bash zgodovino v terminalu Linux ali macOS

    Kako uporabljati Bash zgodovino v terminalu Linux ali macOS

    Bash shell je standardno terminalsko okolje, ki je vključeno v večino distribucij Linuxa, vključeno v macOS, in je na voljo za namestitev v sistemu Windows 10. Zapiske, ki jih vnesete, si zapomni in jih shrani v zgodovinsko datoteko. Verjetno poznate nekaj osnov zgodovine bash, vendar je veliko močnejši, kot bi se zavedali.

    Bližnjice na tipkovnici

    Če se želite pomikati po zgodovini, lahko uporabite nekaj koristnih bližnjic na tipkovnici. Če pritisnete te bližnjice, se bodo v pozivu prikazali prej uporabljeni ukazi.

    • Puščica navzgor ali Ctrl + P: Pojdite na prejšnji ukaz v zgodovini. Večkrat pritisnite tipko, da se pomaknete nazaj skozi ukaze, ki ste jih uporabili.
    • Puščica navzdol ali Ctrl + N: Pojdi na naslednji ukaz v zgodovini. Večkrat pritisnite tipko, da se pomaknete naprej skozi ukaze, ki ste jih uporabili.
    • Alt + R: Vse spremembe v ukazu, ki ste ga izvlekli iz zgodovine, prekličite, če ste ga uredili v trenutni vrstici.

    Bash ima tudi poseben način »odpoklica«, ki ga lahko uporabite za iskanje ukazov, ki ste jih pred tem zagnali, namesto da se premikate po njih enega za drugim.

    • Ctrl + R: Prikličite zadnji ukaz, ki se ujema z vnesenimi znaki. Pritisnite to bližnjico in začnite tipkati, da poiščete ukaz bash.
    • Ctrl + O: Zaženite ukaz, ki ste ga našli s Ctrl + R.
    • Ctrl + G: Zapustite način iskanja zgodovine brez zagona ukaza.

    Oglejte si svojo Bash zgodovino

    Celotno zgodovino bash lahko natisnete na zaslon tako, da zaženete en ukaz:

    zgodovino

    Videli boste seznam vseh ukazov v vaši zgodovini bash, skupaj s številko na levi strani vsakega. Ukaz z "1" ob njem je najstarejši ukaz v vaši zgodovini bash, medtem ko je ukaz z najvišjo številko najnovejši.

    Z izhodom lahko naredite vse, kar želite. Na primer, lahko ga preusmerite na grepukaz za iskanje zgodovine ukazov.

    zgodovina | grep your_search

    Lahko ga tudi preusmerite na rep ukaz, da si ogledate le majhno število nedavnih ukazov, ki ste jih zagnali. Naslednji ukaz bi na primer prikazal zadnjih 5 vnosov v vaši zgodovini.

    zgodovina | rep -5

    Zaženite ukaze iz zgodovine

    Bash lahko hitro »razširi« prejšnje ukaze ali jih razširi in spremeni. Ta funkcija je znana kot »razširitev zgodovine« in uporablja klicaj, znan kot »bang«. Samo vnesite jih ob pozivu in pritisnite Enter, da jih zaženete, kot bi zagnali kateri koli drug ukaz.

    Za zagon določenega ukaza iz zgodovine s številko, uporabite ta ukaz:

    !#

    Na primer, recimo, da ste želeli zagnati 12. ukaz iz zgodovine bash. To je ukaz z "12" levo od njega, ko zaženete zgodovino ukaz. Vnesite naslednji ukaz.

    !12

    Če želite znova zagnati zadnji ukaz, ki ste ga zagnali, vnesite naslednje. To ima enak učinek kot pritiskanje puščice navzgor enkrat, da si ogledate prejšnji ukaz in nato pritisnete Enter.

    !!

    Na ukaz lahko navedete tudi določeno število vrstic nazaj. Na primer, !-2 bi zagnal drugi do zadnjega ukaza. !! pomeni isto kot !-1 .

    Ta razširitev deluje kjerkoli na liniji. Dodate lahko vse, kar želite, pred ali po !! ali kateri koli drug izraz v tem razdelku. Na primer, za vnos zadnjega ukaza, ki ste ga opravili, lahko vnesete naslednji ukaz sudo, kar mu daje privilegije. To je še posebej uporabno, če pozabite dodati  sudo pred zagonom ukaza.

    sudo !!

    Ali lahko na primer znova zaženete prejšnji ukaz in preusmerite njegov izhod v grep za iskanje besedila.

    !! | grep text

    Če želite iskati ukaz v svoji zgodovini in ga zagnati, vnesite naslednje. S tem boste zagnali zadnji ukaz, ki se ujema z besedilom, ki ga določite:

    !besedilo

    Torej, če ste pred kratkim zagnali ukaz, ki se je začel z ping, za iskanje lahko zaženete naslednji ukaz. S tem boste po zgodovini iskali nazaj, poiskali najnovejši ukaz, ki se začne z »pi“In ga takoj zaženite:

    !pi

    Dodate lahko : str na katero koli od zgornjih razširitev in bash bo ukaz natisnil na terminal, ne da bi ga zagnal. To je uporabno, če želite potrditi, da izberete pravilen ukaz, preden ga zaženete.

    !12: str
    !!: str
    !besedilo: str

    Ponovna uporaba argumentov iz vaše zgodovine

    Bash vam omogoča tudi zagon novega ukaza, vendar uporabite argumente iz prejšnjih ukazov v svoji zgodovini. To vam lahko pomaga hitro ponovno uporabiti dolge ali zapletene argumente, ne da bi jih morali ponovno vnašati.

    ukaz! $

    Recimo, da ste zagnali ukaz dotik / domov / chris / nekaj_long_file_name_you_dont_want_to_type_again . Zdaj želite zagnati ukaz nano / domov / chris / nekaj_long_file_name_you_dont_want_to_type_again. Namesto tipkanja celotne stvari iz nič, lahko zaženete:

    nano! $

    The !$ bi bash samodejno izpolnil zadnji argument iz vašega prejšnjega ukaza.

    To zadostuje samo zadnjemu argumentu. Torej, če zaženete ping google.com -c 4 in nato zaženite ping! $ , to bi se samo razširilo na »ping 4“.

    Če želite popraviti to situacijo, lahko uporabite naslednji trik za razširitev prvega argumenta v vrstici in ne na zadnji:

    ukaz! ^

    Torej, če boš tekel ping google.com -c 4 in nato tekel ping! ^ , bash bi to razširil na »ping google.com ".

    Če želite izpolniti vse argumente, uporabljene v prejšnjem ukazu, namesto samo enega argumenta, uporabite naslednje:

    ukaz! *

    Torej, če boš tekel ping! * namesto tega bi bash samodejno izpolnil vse argumente, ki ste jih uporabili v prejšnjem ukazu.

    Uporabite lahko isti trik, ki ga uporabljate za izvajanje ukazov iz svoje zgodovine, da dobite argumente od njih. Uporabite naslednji obrazec.

    command! abc: #

    Na primer, naredili smo ukaz sudo ime gostitelja ubuntu prej. Če zaženemo naslednji ukaz, bo bash po zgodovini iskal nazaj, da bo našel zadnji ukaz, ki se začne z vnesenimi črkami in izpolni argument, ki ga podamo. Torej, če zaženemo echo! su: 2 , bash bo poiskal zadnji ukaz, ki se začne z “su"In izpolnite drugi argument, ki je"ubuntu“.

    Drugi triki delujejo, kot bi pričakovali. Na primer, zamenjava številke z zvezdico, znano kot nadomestni znak, povzroči, da bash izpolni vse argumente iz ukaza:

    command! abc: *

    Znova zaženite prejšnjo ukazno vrstico in jo spremenite

    Bash vam omogoča tudi, da znova zaženete prejšnji ukaz in podate nekaj, kar bi bilo treba spremeniti. To je lahko koristno za popravljanje tipkarske napake v ukazu. Naslednji ukaz bo na primer znova zagnal prejšnji ukaz in nadomestil besedilo “abc"V njem z besedilom"xyz“.

    ^ abc ^ xyz

    Na primer, če ste slučajno tekli ping gogle.si, potem bi lahko tekel ^ gog ^ goog in bash bi zagnal ukaz ping google.com namesto tega.

    Kje se hrani vaša zgodovina in kako jo očistiti

    Zasedba bash shrani zgodovino ukazov, ki ste jih zagnali v zgodovinsko datoteko vašega uporabniškega računa, po privzetku ~ / .bash_history. Na primer, če je vaše uporabniško ime bob, boste to datoteko našli na /home/bob/.bash_history.

    Ker je vaša zgodovina shranjena v datoteki, ostane med sejami. Lahko zaženete nekaj ukazov, se odjavite, vrnete se naslednji dan in ti ukazi bodo še vedno v zgodovinski datoteki pripravljeni za ogled in uporabo. Vsak uporabniški račun ima svojo zgodovinsko datoteko z ločeno zgodovino ukazov.

    Za brisanje zgodovine bash lahko zaženete naslednji ukaz. S tem se izbriše vsebina datoteke .bash_history vašega uporabniškega računa:

    zgodovina -c

    Bash privzeto zapomni le omejeno število ukazov, s čimer preprečuje, da bi se zgodovinska datoteka povečala. Število vnosov zgodovine bash si zapomni kontrolo ZGODOVINAspremenljivko. Privzeto je običajno 500 ali 1000 vnosov. Za prikaz velikosti zgodovine bash na vašem sistemu lahko zaženete naslednji ukaz.

    echo $ HISTSIZE

    Če želite nastaviti zgodovino na nič, zaženite naslednji ukaz.

    HISTSIZE = 0

    V trenutni seji bash ne bo shranil nobenih vnosov zgodovine, razen če vaš ukaz izvaja HISTSIZE = 1000 za vrnitev na določeno število vnosov.

    Kako prezreti prostore in podvojene

    Bash vam omogoča, da prezrete vnose iz zgodovine, ki se začnejo s presledkom, če nastavite HISTCONTROLspremenljivka na ignorespace.

    HISTCONTROL = ignorespace

    Vnesite presledek pred ukazom, preden ga zaženete v lupini bash in ukaz se bo normalno izvajal, vendar se ne bo prikazal v zgodovini, če imate omogočeno to spremenljivko. To vam omogoča, da ohranjate zgodovino nekoliko čistejšo in izberete, da boste zagnali ukaze, ne da bi se pojavili v zgodovini.

    Bash omogoča tudi ignoriranje podvojenih ukazov, ki lahko zapravijo zgodovino. Če želite to narediti, nastavite HISTCONTROL do ignoredups.

    HISTCONTROL = ignoredups

    Za uporabo obeh ignorespace in ignoredups funkcijo, nastavite HISTCONTROL spremenljivka na ignoreboth.

    HISTCONTROL = ignorebot

    Upoštevajte, da ste nastavili spremenljivke bash le za trenutno sejo. Dodati jih morate v datoteko .bashrc vašega uporabniškega računa, če želite, da se te vrednosti samodejno nastavijo v vsaki seji bash, ki jo začnete, če želite.

    Bash lupina je kompleksno orodje z veliko več možnostmi, kot je ta. Podrobnejše informacije in druge napredne trike, ki jih lahko uporabite, preberite v oddelkih o zgodovini zgodb Bash in razširitvi zgodovine v uradnem priročniku za bash.