If-Koubou

Kako koristiti vašu povijest bashova u Linux ili MacOS terminalu

Kako koristiti vašu povijest bashova u Linux ili MacOS terminalu (Kako da)

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.

Prečaci na tipkovnici

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.

  • Strelica prema gore ili Ctrl + P: Prijeđite na prethodnu naredbu u svojoj povijesti. Pritisnite tipku više puta za hodanje unatrag pomoću naredbi koje ste koristili.
  • Strelica dolje ili Ctrl + N: Idite na sljedeću naredbu u svojoj povijesti. Pritisnite tipku više puta da biste prošli kroz naredbe koje ste koristili.
  • Alt + R: Vratite sve izmjene naredbe koje ste izdvojili iz svoje povijesti ako ste ga uredili na trenutačnoj liniji.

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.

  • Ctrl + R: Nazovite zadnju naredbu koja odgovara znakovima koje ste unijeli. Pritisnite ovaj prečac 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: Ostavite način pretraživanja povijesti bez pokretanja naredbe.

Pogledajte svoju povijest sastavljanja

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 grepnaredba 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

Pokreni naredbe iz svoje povijesti

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

Ponovno upotrijebite argumente iz svoje povijesti

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: *

Ponovno pokrenite prethodnu naredbu i promijenite ga

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.

Gdje se vaša povijest pohranjuje i kako ga očistiti

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 HISTSIZEpromjenjiva. 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.

Kako zanemariti prostore i duplikate

Bash omogućuje zanemarivanje unosa povijesti koji počinju s razmakom ako postavite HISTCONTROLvarijablu 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 HISTCONTROLdo 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.