Baca bash je standardno terminalno okruženje uključeno u većinu Linux distribucija, uključeno u macOS i dostupno za instalaciju na Windows 10. Ona pamti naredbe koje upisujete i pohranjujete u povijesnoj datoteci. Vjerojatno znate nekoliko osnova povijesti bash, ali puno je moćnije od onoga što biste mogli shvatiti.
Da biste se pomicali kroz povijest bashova, možete koristiti nekoliko korisnih tipkovnih prečaca. Pritisnite ove prečace i naredbe koje ste ranije koristili pojavit će se u trenutku.
Bash također posjeduje poseban "opoziv" način kojim možete pretražiti naredbe koje ste prethodno pokrenuli, a ne pomicati ih jedan po jedan.
Cijelu povijest bash možete ispisati na zaslonu tako da pokrenete jednu naredbu:
povijest
Vidjet ćete popis svih naredbi u vašoj bash povijesti, zajedno s brojem s lijeve strane svake. Naredba sa "1" pored nje je najstarija naredba u vašoj povijesti basha, a naredba s najvećim brojem je najnovija.
S izlazom možete učiniti sve što vam se sviđa. Na primjer, možete ga cijeviti na grep
naredba za pretraživanje vaše povijesti naredbi.
povijest | grep your_search
Također možete cijev na rep
naredba da biste vidjeli samo mali broj nedavnih naredbi koje ste pokrenuli. Na primjer, sljedeća naredba prikazuje posljednje 5 unosa u vašoj povijesti.
povijest | rep -5
Bash može brzo "proširiti" prethodne naredbe ili ih proširiti i mijenjati. Ova je značajka poznata kao "proširenje povijesti" i upotrebljava uskličnik, poznat kao "bang". Samo ih upišite u brz i pritisnite Enter da biste ih pokrenuli kao da pokrenete bilo koju drugu naredbu.
Da biste pokrenuli određenu naredbu iz svoje povijesti prema broju, upotrijebite sljedeću naredbu:
!#
Na primjer, recimo da ste htjeli pokrenuti 12. naredbu iz vaše povijesti basha. To je zapovijed s "12" lijevo od njega kad pokrenete povijest
naredba. Upisali biste sljedeću naredbu.
!12
Da biste ponovo pokrenuli zadnju naredbu koju ste pokrenuli, upišite sljedeće. To ima isti učinak kao pritiskom strelice gore za pregled prethodne naredbe, a zatim pritiskom na Enter.
!!
Možete također uputiti na naredbu za povratak određenog broja redaka. Na primjer, !-2
će pokrenuti drugi do zadnje naredbe koju ste pokrenuli. !!
znači isto što i !-1
.
Ovo proširenje funkcionira bilo gdje na liniji. Možete dodati sve što vam se sviđa prije ili poslije!!
ili bilo koji drugi izraz u ovom odjeljku. Na primjer, možete upisati sljedeću naredbu da ponovo pokrenete posljednju naredbu koju ste proveli sudo
, dajući mu privilegije korijena. To je osobito korisno ako ste zaboravili dodatisudo
prije pokretanja naredbe.
sudo !!
Ili, na primjer, možete ponavljati prethodnu naredbu i cijepiti njegov izlaz za grep kako biste tražili neki tekst.
!! | grep tekst
Da biste tražili naredbu u svojoj povijesti i pokrenuli je, upišite sljedeće. Ovo će pokrenuti zadnju naredbu koja odgovara navedenom tekstu:
!tekst
Dakle, ako ste nedavno pokrenuli naredbu koja je započela sa ping
, možete pokrenuti sljedeću naredbu za pretraživanje. Ovo će pretražiti unatrag kroz vašu povijest, pronađite najnoviju naredbu koja počinje s "pobožan
"I odmah ga pokrenite:
! pi
Možete dodati a : p
na bilo koji od gore navedenih proširenja i bash će ispisati naredbu na terminal bez pokretanja. To je korisno ako želite potvrditi da odabirete ispravnu naredbu prije nego što pokrenete.
! 12: p
!!: p
! Tekst: p
Bash također omogućuje pokretanje nove naredbe, ali upotrijebite argumente iz prethodnih naredbi u svojoj povijesti. To vam može pomoći da brzo ponovno upotrijebite dugo ili komplicirane argumente bez ponovnog upisivanja.
naredba! $
Na primjer, recimo da ste pokrenuli naredbu dodir / home / chris / some_long_file_name_you_dont_want_to_type_again
, Sada želite pokrenuti naredbu nano / home / chris / some_long_file_name_you_dont_want_to_type_again
, Umjesto da upišete cijelu stvar od nule, možete pokrenuti:
nano! $
!$
bi bash automatski popunio zadnji argument iz prethodne naredbe.
To samo ispunjava zadnji argument. Dakle, ako pokrenete ping google.com -c 4
i zatim pokrenite ping! $
, to bi se samo proširilo na "ping 4
“.
Da biste riješili tu situaciju, možete upotrijebiti sljedeći trik da biste proširili prvi argument na retku, a ne posljednji:
zapovijed! ^
Dakle, ako si trčao ping google.com -c 4
i potrčao ping! ^
, bash će proširiti ovo na "ping google.com "
.
Da biste ispunili sve argumente upotrijebljene u prethodnoj naredbi umjesto samo jednog argumenta, upotrijebite sljedeće:
naredba! *
Dakle, ako si trčao ping! *
Umjesto toga, bash će automatski ispuniti sve argumente koje ste koristili u prethodnoj naredbi.
Možete upotrijebiti isti trik koji upotrebljavate za pokretanje naredbi iz svoje povijesti kako biste dobili njihovi argumenti. Samo upotrijebite sljedeći obrazac.
naredba! abc: #
Na primjer, pokrenuli smo naredbu sudo hostname ubuntu
ranije. Ako pokrenemo sljedeću naredbu, bash će pretražiti unatrag kroz povijest kako bi pronašli posljednju naredbu koja počinje slovima koje upisujemo i ispunimo argument koji navodimo. Dakle, ako trčimo echo! su: 2
, bash će pretražiti natrag kako bi pronašao posljednju naredbu koja počinje s "Su
"I popuniti svoj drugi argument, koji je"ubuntu
“.
Ostali trikovi rade kako biste očekivali. Na primjer, zamjena broja s zvjezdicom, poznatom kao zamjenska kartica, uzrokuje bash da popuni sve argumente iz naredbe:
naredba! abc: *
Bash vam također omogućuje da ponovo pokrenete prethodnu naredbu i odredite nešto što bi trebalo mijenjati. To može biti korisno za ispravljanje greške u naredbi. Na primjer, sljedeća naredba ponovo će pokrenuti prethodnu naredbu, zamjenjujući tekst "abeceda
"U njemu s tekstom"xyz
“.
^ Abc ^ xyz
Na primjer, ako slučajno krenete ping gogle.com
, tada biste mogli pokrenuti ^ Gog ^ GOOG
i bash će pokrenuti naredbu ping google.com
umjesto toga.
Skupina bash pohranjuje povijest naredbi koje ste pokrenuli u datoteci povijesti vašeg korisničkog računa u ~ / .bash_history prema zadanim postavkama. Na primjer, ako je vaše korisničko ime bob, ta će datoteka pronaći na adresi /home/bob/.bash_history.
Budući da je vaša povijest pohranjena u datoteci, ona se nastavlja između sesija. Možete pokrenuti neke naredbe, odjaviti se, vratiti se sljedeći dan, a te će se naredbe i dalje nalaziti u vašoj povijesnoj datoteci spremnoj za pregled i upotrebu. Svaki korisnički račun ima vlastitu datoteku povijesti s zasebnom zapovjednom komandom.
Da biste izbrisali povijest veze, možete pokrenuti sljedeću naredbu. Time se briše sadržaj datoteke .bash_history vašeg korisničkog računa:
povijest -c
Bash pamti ograničeni broj naredbi prema zadanim postavkama, sprečavajući tako da se povijest datoteke prevelika. Broj povijesnih zapisa koji se sjećaju se pod kontrolom HISTSIZE
promjenjiva. Zadana je obično 500 ili 1000 unosa. Možete pokrenuti sljedeću naredbu da biste vidjeli veličinu povijesti bash na vašem sustavu.
echo $ HISTSIZE
Da biste postavili svoju povijest na nulu, pokrenite sljedeću naredbu.
HISTSIZE = 0
Za trenutačnu sesiju, bash neće pohraniti nikakve unose povijesti osim ako pokrenete naredbu poput HISTSIZE = 1000
da biste ga vratili na određeni broj unosa.
Bash omogućuje zanemarivanje unosa povijesti koji počinju s razmakom ako postavite HISTCONTROL
varijablu do ignorespace.
HISTCONTROL = ignorespace
Unesite razmak prije naredbe prije nego što je pokrenete u bash shell i naredba će se normalno prikazivati, ali se neće pojaviti u vašoj povijesti ako imate ovu varijablu omogućenu. To vam omogućuje da svoju povijest održite malo čišćom, odabirom pokretanja naredbi bez da se prikazuju u vašoj povijesti.
Bash vam omogućuje i da zanemarite duplicirane naredbe koje mogu ometati vašu povijest. Da biste to učinili, postavite HISTCONTROL
do ignoredups.
HISTCONTROL = ignoredups
Da biste koristili oba ignorespace
i ignoredups
postavite HISTCONTROL
varijablu do ignoreboth.
HISTCONTROL = ignoreboth
Imajte na umu da varijable bash koje ste postavili zadržat će samo za trenutačnu sesiju. Morat ćete ih dodati na .bashrc datoteku svog korisničkog računa kako biste ove vrijednosti automatski postavili na svakoj početnoj sesiji koju ste započeli, ako to želite.
Shema bash je složen alat s mnogo više opcija od ovih. Posavjetujte se s dijelovima Bash povijesti izgradnje i proširenja povijesti u službenom bash priručniku detaljnije informacije i druge napredne trikove koje možete koristiti.