loader

Kako uporabljati Bash zgodovino v terminalu Linux ali macOS

Anonim

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 : Pojdi 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 : pojdite na naslednji ukaz v zgodovini. Večkrat pritisnite tipko, da se pomaknete naprej skozi ukaze, ki ste jih uporabili.
  • Alt + R : Če ste urejali trenutno vrstico, spremenite vse ukaze, ki ste jih izvlekli iz zgodovine.

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.

  • 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 : Zapusti 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 povežete z ukazom grep da poiščete zgodovino ukazov.

 zgodovina | grep your_search 

Lahko bi jo preusmerili tudi v ukaz tail 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 ukaz history . 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 !! pomeni isto stvar 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 preko sudo, lahko vnesete naslednji ukaz, ki mu da korenske pravice. To je še posebej uporabno, če pozabite dodati sudo preden zaženete ukaz.

 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:

 ! text 

Torej, če ste pred kratkim zagnali ukaz, ki se je začel s ping, lahko za iskanje zaženete naslednji ukaz. To bo iskalo nazaj skozi zgodovino, najti zadnje ukaze, ki se začnejo s » pi « in ga takoj zagnati:

 ! pi 

V katerokoli od zgornjih razširitev lahko dodate a :p 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: p 
 !!: p 
 ! text: 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! $ 

Na primer, recimo, da ste touch /home/chris/some_long_file_name_you_dont_want_to_type_again ukaz touch /home/chris/some_long_file_name_you_dont_want_to_type_again . Zdaj želite zagnati ukaz nano /home/chris/some_long_file_name_you_dont_want_to_type_again . Namesto tipkanja celotne stvari iz nič, lahko zaženete:

 nano! $ 

V polju !$ 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ženete ping !$, Bi se to 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 ste zagnali ping google.com -c 4 in nato tekli ping !^, Bi bash razširil to na " ping google.com" .

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

 ukaz! * 

Torej, če namesto tega zaženete ping !*, Bo 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, prej smo zagnali ukaz sudo hostname ubuntu . Če zaženemo naslednji ukaz, bo bash po zgodovini iskal nazaj, da bo našel zadnji ukaz, ki se začne s črkami, ki jih vnesemo, in izpolni argument, ki ga podamo. Torej, če zaženemo echo !su:2, bo bash poiskal zadnji ukaz, ki se bo začel z “ su ”, in izpolnil 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 ponovil prejšnji ukaz in v njem nadomestil besedilo “ abc ” z besedilom “ xyz “.

 ^ abc ^ xyz 

Če na primer nenamerno ping gogle.com, lahko zaženete ^gog^goog in bash namesto tega zažene ukaz ping google.com .

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 spremenljivko HISTSIZE . 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 zaženete ukaz, kot je HISTSIZE=1000 da ga vrnete na določeno število vnosov.

Kako prezreti prostore in podvojene

Bash vam omogoča, da prezrete zgodovinske vnose, ki se začnejo s presledkom, če nastavite spremenljivko HISTCONTROL 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. V ta namen nastavite HISTCONTROL na ignoredups.

 HISTCONTROL = ignoredups 

Če želite uporabiti funkcijo ignorespace in ignoredups, nastavite spremenljivko ignoreboth. na ignoreboth.

 HISTCONTROL = ignorebot 

Upoštevajte, da ste nastavili spremenljivke bash le za trenutno sejo. Dodati jih boste morali v datoteko .bashrc vašega uporabniškega računa, da bodo te vrednosti samodejno nastavljene v vsaki seji bash, ki jo začnete, če vam je to bolj všeč.

Bash lupina je kompleksno orodje z veliko več možnostmi, kot je ta. Oglejte si oddelke o zgodovini zgodb in zgodovine razširitve v uradnem priročniku Bash podrobnejše informacije in druge napredne trike, ki jih lahko uporabite.

Izbira Urednika