Kako koristiti Bash povijest u Linux ili MacOS terminalu
Bash shell je standardno terminalsko okruženje uključeno u većinu Linux distribucija, uključeno u MacOS, i dostupno za instalaciju na Windows 10. Zapamti naredbe koje upisujete i pohranjuje ih u datoteku povijesti. Vjerojatno znate nekoliko osnova povijesti basha, ali je mnogo snažnije nego što možete shvatiti.
Tipkovni prečaci
Za pomicanje kroz povijest bash-a možete koristiti nekoliko korisnih prečaca na tipkovnici. Pritisnite ove prečace i naredbe koje ste prethodno koristili pojavit će se na upitu.
- Strelica prema gore ili Ctrl + P: Idi na prethodnu naredbu u povijesti. Pritisnite tipku više puta kako biste hodali unatrag kroz naredbe koje ste koristili.
- Strelica dolje ili Ctrl + N: Idite na sljedeću naredbu u povijesti. Pritisnite tipku više puta kako biste se kretali naprijed kroz naredbe koje ste koristili.
- Alt + R: Poništite sve izmjene naredbe koju ste izvukli iz povijesti ako ste ih uredili na trenutačnoj liniji.
Bash također ima poseban način "opoziva" koji možete koristiti za traženje naredbi koje ste prethodno pokrenuli, umjesto da ih pregledavate jedan po jedan.
- Ctrl + R: Pozovite posljednju naredbu koja odgovara znakovima koje ste unijeli. Pritisnite ovu prečicu i počnite tipkati da biste pretražili svoju povijest basha za naredbu.
- Ctrl + O: Pokrenite naredbu koju ste pronašli pomoću Ctrl + R.
- Ctrl + G: Napustite način pretraživanja povijesti bez pokretanja naredbe.
Pogledajte svoju povijest napada
Možete ispisati cijelu povijest basha na zaslonu pokretanjem jedne naredbe:
povijest
Vidjet ćete popis svih naredbi u vašoj povijesti bash, zajedno s brojem s lijeve strane svake od njih. Naredba s oznakom "1" pored nje je najstarija naredba u vašoj povijesti bash, dok je naredba s najvećim brojem najnovija naredba.
S izlazom možete učiniti sve što želite. Na primjer, možete ga preusmjeriti na grep
naredbu za pretraživanje povijesti naredbi.
povijest | grep your_search
Mogli biste ga i odvesti do rep
naredbu da biste vidjeli samo mali broj nedavnih naredbi koje ste pokrenuli. Na primjer, sljedeća naredba prikazuje posljednjih 5 unosa u vašoj povijesti.
povijest | rep -5
Pokreni naredbe iz povijesti
Bash može brzo "proširiti" prethodne naredbe ili ih proširiti i modificirati. Ova značajka je poznata kao "proširenje povijesti" i koristi uskličnik, poznat kao "prasak". Samo ih upišite u prompt i pritisnite Enter da biste ih pokrenuli kao da biste pokrenuli bilo koju drugu naredbu.
Da biste iz svoje povijesti pokrenuli određenu naredbu po broju, upotrijebite sljedeću naredbu:
!#
Na primjer, recimo da ste htjeli pokrenuti 12. naredbu iz vaše bash povijesti. To je naredba s "12" lijevo od nje kada pokrenete povijest
naredba. Upišite sljedeću naredbu.
!12
Da biste ponovno pokrenuli posljednju naredbu koju ste pokrenuli, upišite sljedeće. To ima isti učinak kao i pritiskom na strelicu prema gore kako biste pogledali prethodnu naredbu, a zatim pritisnite tipku Enter.
!!
Također možete uputiti na naredbu određeni broj redaka natrag. Na primjer, !-2
bi pokrenula drugu zadnju naredbu. !!
znači isto kao i !-1
.
Ovo proširenje funkcionira bilo gdje na liniji. Možete dodati sve što želite prije ili poslije !!
ili bilo koji drugi izraz u ovom odjeljku. Na primjer, možete upisati sljedeću naredbu kako biste ponovno izveli zadnju naredbu koju ste prošli sudo
, dajući mu root privilegije. To je osobito korisno ako zaboravite dodati sudo
prije pokretanja naredbe.
sudo !!
Ili, na primjer, možete ponoviti prethodnu naredbu i ispustiti njen izlaz u grep za traženje nekog teksta.
!! | grep tekst
Da biste potražili naredbu u povijesti i pokrenuli je, upišite sljedeće. To će pokrenuti posljednju naredbu koja odgovara tekstu koji navedete:
!tekst
Dakle, ako ste nedavno pokrenuli naredbu koja je počela ping
, možete ga pokrenuti za pretraživanje. Time ćete pretraživati unatrag kroz povijest, pronaći zadnju naredbu koja počinje s "pobožan
"I odmah ga pokrenite:
!pobožan
Možete dodati a : p
na bilo koje 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 je pokrenete.
!12: p
!!: p
!Tekst: p
Ponovna upotreba argumenata iz vaše povijesti
Bash vam također omogućuje pokretanje nove naredbe, ali koristite argumente iz prethodnih naredbi u povijesti. To vam može pomoći da brzo ponovno iskoristite duge ili komplicirane argumente bez potrebe da ih ponovno upisujete.
naredba! $
Na primjer, recimo da ste pokrenuli naredbu dodir / home / chris / neki_dolaziji_datoteke_za_dont_want_to_type_again
. Sada želite pokrenuti naredbu nano / home / chris / neki_drugi_datoteke_vase_dont_want_to_type_again
. Umjesto da tipkate cijelu stvar od početka, možete pokrenuti:
nano! $
!$
bi bash automatski ispunio posljednji argument iz vaše prethodne naredbe.
Ovo samo ispunjava posljednji argument. Dakle, ako trčite 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:
naredba! ^
Dakle, ako pobjegneš ping google.com-c 4
i onda potrčao ping! ^
, bash bi to proširio na "ping google.com "
.
Da biste popunili sve argumente korištene u prethodnoj naredbi umjesto samo jednog argumenta, upotrijebili biste sljedeće:
naredba! *
Dakle, ako pobjegneš ping! *
umjesto toga, bash bi automatski popunio sve argumente koje ste koristili u prethodnoj naredbi.
Možete koristiti isti trik koji koristite za izvo enje naredbi iz svoje povijesti kako biste od njih dobili argumente. Samo upotrijebite sljedeći obrazac.
command! abc: #
Primjerice, pokrenuli smo naredbu sudo hostname ubuntu
ranije. Ako pokrenemo sljedeću naredbu, bash će pretraživati unatrag kroz povijest kako bi pronašao posljednju naredbu koja počinje slovima koja upisujemo i popuniti argument koji smo naveli. Dakle, ako pobjegnemo echo! su: 2
, bash će tražiti posljednju naredbu koja počinje s “Su
"I ispunite drugi argument, a to je"ubuntu
„.
Drugi trikovi rade kako ste očekivali. Na primjer, zamjena broja zvjezdicom, poznatog kao zamjenski znak, uzrokuje da bash ispuni sve argumente iz naredbe:
naredba! abc: *
Ponovno pokrenite prethodnu naredbu i promijenite je
Bash vam također omogućuje ponovno izvođenje prethodne naredbe i određivanje nečega što bi trebalo promijeniti. To može biti korisno za ispravljanje pogrešnog zadatka u naredbi. Na primjer, sljedeća naredba će ponovno izvesti prethodnu naredbu, zamjenjujući tekst “abeceda
"U njemu s tekstom"xyz
„.
^ Abc ^ xyz
Na primjer, ako ste slučajno trčali ping gogle.com
, onda možete trčati ^ Gog ^ GOOG
i bash bi pokrenuo naredbu ping google.com
umjesto.
Gdje se čuva vaša povijest i kako je očistiti
Bash shell po zadanom pohranjuje povijest naredbi koje ste pokrenuli u datoteci povijesti vašeg korisničkog računa na ~ / .bash_history. Na primjer, ako je vaše korisničko ime bob, tu ćete datoteku pronaći na /home/bob/.bash_history.
Budući da je vaša povijest pohranjena u datoteku, ona ostaje između sesija. Možete pokrenuti neke naredbe, odjaviti se, vratiti se sljedećeg dana, a te će naredbe biti spremne za pregled i korištenje u datoteci povijesti. Svaki korisnički račun ima svoju datoteku povijesti s zasebnom poviješću naredbi.
Da biste izbrisali svoju povijest basha, možete pokrenuti sljedeću naredbu. Time se briše sadržaj datoteke .bash_history vašeg korisničkog računa:
povijest -c
Bash samo pamti ograničen broj naredbi prema zadanim postavkama, sprječavajući da se datoteka povijesti poveća. Broj unosa povijesti bash pamti se kontrolira HISTSIZE
promjenjiva. Zadano je obično 500 ili 1000 unosa. Možete pokrenuti sljedeću naredbu da biste vidjeli veličinu bash povijesti na vašem sustavu.
echo $ HISTSIZE
Da biste postavili povijest na nulu, pokrenite sljedeću naredbu.
HISTSIZE = 0
Za trenutnu sesiju bash neće pohranjivati unose povijesti ako ne pokrenete naredbu kao HISTSIZE = 1000
za vraćanje na određeni broj unosa.
Kako ignorirati razmake i duplikate
Bash omogućuje ignoriranje unosa povijesti koji počinju razmakom ako postavite oznaku HISTCONTROL
varijabla u ignorespace.
HISTCONTROL = ignorespace
Upišite razmak prije naredbe prije pokretanja u bash ljusci i naredba će se normalno izvoditi, ali se neće pojaviti u vašoj povijesti ako imate omogućenu ovu varijablu. To vam omogućuje da svoju povijest održavate malo čišćom, odabirom pokretanja naredbi bez da se one pojavljuju u vašoj povijesti.
Bash vam također omogućuje da zanemarite dvostruke naredbe koje mogu pretrpjeti povijest. Da biste to učinili, postavite HISTCONTROL
do ignoredups.
HISTCONTROL = ignoredups
Da biste koristili oba ignorespace
i ignoredups
značajku, postavite HISTCONTROL
varijabla u ignoreboth.
HISTCONTROL = ignoreboth
Imajte na umu da bash varijable koje postavite ostaju samo za trenutnu sesiju. Morat ćete ih dodati u datoteku .bashrc korisničkog računa da bi se te vrijednosti automatski postavile u svakoj početnoj sesiji bash, ako vam se to sviđa.
Bash shell je složen alat s mnogo više opcija od njih. Posavjetujte se s dijelovima Bash povijesti i proširenja povijesti u službenom priručniku za bash detaljnije informacije i druge napredne trikove koje možete koristiti.