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:
history
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.
grep
naredba za pretraživanje vaše povijesti naredbi.
history | grep your_search
tail
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.
history | tail -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
history
naredba. Upisali biste sljedeću naredbu.
!12
!!
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
!!
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 dodati
sudo
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 text
!text
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"
pi
I odmah ga pokrenite:
!pi
: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
!text: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.
command !$
Na primjer, recimo da ste pokrenuli naredbu
touch /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.
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:
command !^
Dakle, ako si trčao
ping google.com -c 4
i potrčao
ping !^
bash će proširiti ovo na"
ping google.com'
command !*
Dakle, ako si trčao
ping !*
Umjesto toga, bash će automatski ispuniti sve argumente koje ste koristili u prethodnoj naredbi.
command !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:
command !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"
abc
"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:
history -c
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.
Kako zanemariti prostore i duplikate
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.
HISTCONTROL
do
ignoredups.
HISTCONTROL=ignoredups
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.