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 grep
ukaz 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 ZGODOVINA
spremenljivko. 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 HISTCONTROL
spremenljivka 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.