24Aug

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

Shell 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 upotrijebiti nekoliko korisnih tipkovnih prečaca. Pritisnite ove prečace i naredbe koje ste ranije koristili pojavit će se u trenutku.

  • Strelica gore ili Ctrl + P : Idite na prethodnu naredbu u svojoj povijesti. Pritisnite tipku više puta za hodanje unatrag pomoću naredbi koje ste koristili.
  • strelica prema 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 : Vrati sve promjene naredbe koju ste izdvojili iz svoje povijesti ako ste ga uredili na trenutnoj liniji.

Bash također ima poseban "opoziv" način kojim možete pretražiti naredbe koje ste prethodno pokrenuli, a ne pomicati ih jedan po jedan.

  • Ctrl + R : Sjetite 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 : Napustite način traženja povijesti bez pokretanja naredbe.

Pregled vaše povijesti basha

Možete ispisati cijelu povijest bash na zaslonu tako da pokrenete jednu naredbu:

povijest

Vidjet ćete popis svih naredbi u vašoj povijesti bash, 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.

Možete izraditi sve što vam se sviđa. Na primjer, možete ga staviti na grep komandu da biste pretražili svoju zapovjednu povijest. Povijest

grep your_search

Također možete cijev na rep zapovijed 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

Izvršite naredbe iz vaše 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 naredba sa "12" s lijeve strane kada pokrenete naredbu povijesti. 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 da se vrati određeni broj linija. Na primjer, -2 bi pokrenuo drugu do zadnju naredbu koju ste pokrenuli.!!znači isto što i! -1.

Ova ekspanzija radi 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 kroz sudo, dajući mu privilegije roota. To je osobito korisno ako zaboravite dodati sudo prije pokretanja naredbe.

sudo! !

Ili, na primjer, možete ponavljati prethodnu naredbu i cijev svojeg izlaza na grep kako biste tražili neki tekst.

! !|grep text

Da biste tražili naredbu u svojoj povijesti i pokrenuli ga, upišite sljedeće. Ovo će pokrenuti zadnju naredbu koja odgovara tekstu koji ste naveli:

! Tekst

Dakle, ako ste nedavno pokrenuli naredbu započeto pingom, možete pokrenuti sljedeću naredbu da biste je pretražili. Ovo će pretražiti unatrag kroz vašu povijest, pronađite najnoviju naredbu koja počinje s "pi", i odmah ga pokrenite:

! Pi

Možete dodati: p na bilo koji od gore navedenih proširenja i bash će ispisati naredbu terminalu bez pokretanja. To je korisno ako želite potvrditi da odabirete ispravnu naredbu prije nego što pokrenete.

! 12: p!: P! Tekst: p

Ponovno korištenje argumenata iz vaše povijesti

Bash također vam omogućuje da pokrenete novu naredbu, 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, pretpostavimo da ste pokrenuli naredbu dodirnite /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! $

! $ Će učiniti bash automatski popuniti posljednji argument iz vaše prethodne naredbe.

To samo ispunjava zadnji argument. Dakle, ako pokrenete ping google.com -c 4 i pokrenete ping! $, To bi se samo proširilo na "ping 4".

Da biste riješili ovu situaciju, možete upotrijebiti sljedeći izum da biste proširili prvi argument na liniji, a ne zadnji: naredba

! ^

Dakle, ako ste pokrenuli ping google.com -c 4, a zatim pokrenuli 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 ste pokrenuli ping!* Umjesto toga, bash će automatski ispuniti sve argumente koje ste koristili u prethodnoj naredbi

Možete koristiti isti trik koji koristite za pokretanje naredbi iz svoje povijesti kako bi dobili argumente od njih. Jednostavno 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 zadnju naredbu koja počinje slovima koja smo upisali i ispunili argument koji smo naveli.pokrenemo echo! su: 2, bash će pretražiti natrag kako bi pronašao zadnju naredbu koja počinje sa "su" i popuniti drugi argument, što je "ubuntu".

Ostale trikove rade kao što očekujete. Na primjer, zamjena broja zvjezdicom, poznat kao zamjenski znak, dovodi bash da popuni sve argumente iz naredbe:

naredba! Abc: *

ponovo pokrenite prethodnu naredbu i izmijenite ga

Bash također vam omogućuje preusmjeravanje prethodne naredbei odrediti 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 "abc" s tekstom "xyz".

^ abc ^ xyz

Na primjer, ako slučajno pokrenete ping gogle.com, tada možete pokrenuti ^ gog ^ goog i bash će pokrenuti naredbu ping google.com umjesto toga.

Gdje je vaša povijest pohranjena i kako ga izbrisati

Skup basha pohranjuje povijest naredbi koje ste pokrenuli u povijesti vašeg korisničkog računa na ~ /. bash_history prema zadanim postavkama. Na primjer, ako je vaše korisničko ime bob, ta će datoteka pronaći na /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ćeg dana, 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 basha, možete pokrenuti sljedeću naredbu. Ovo briše sadržaj datoteke. bash_history vašeg korisničkog računa:

povijest -c

Bash samo pamti ograničeni broj naredbi prema zadanim postavkama, čime se sprečava prevelika pohrana datoteke povijesti. Broj povijesnih zapisa koji se sjećaju se kontrolira HISTSIZEvjerojatno. 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 trenutnu sesiju, bash neće pohraniti zapise povijesti osim ako pokrenete naredbu poput HISTSIZE = 1000 da biste ga vratili na određeni broj unosa.

Kako zanemariti prostore i duplikate

Umetanje omogućuje da zanemarite unose povijesti koji počinju s razmakom ako postavite HISTCONTROLvariable na ignorespace.

HISTCONTROL = ignoriranje prostora

Unesite razmak prije naredbe prije nego što je pokrenete u bash shell i naredba će se normalno izvoditi, ali se neće pojaviti u vašoj povijesti ako je ova varijabla omogućena. To vam omogućuje da svoju povijest održite malo čišćom, odabirom pokretanja naredbi bez da se prikazuju u vašoj povijesti.

Bash također vam omogućuje da zanemarite duple naredbe koje mogu ometati vašu povijest. Da biste to učinili, postavite HISTCONTROL na ignoredups.

HISTCONTROL = ignoriranje

Da biste koristili značajku ignorespace i ignoriranje, postavite HISTCONTROL varijablu na ignoreboth.

HISTCONTROL = ignoreboth

Imajte na umu da će bash varijable koje ste postavili zadržati samo za trenutnu 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.

Bacač 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.