24Aug
Coaja bash este mediul terminal standard inclus în majoritatea distribuțiilor Linux, inclus în MacOS și disponibil pentru instalarea pe Windows 10. Acesta își amintește comenzile pe care le tastați și le stochează într-un fișier istoric. Probabil știți câteva elemente de bază ale istoriei bash, dar este mult mai puternic decât ați putea realiza.
Comenzi rapide de la tastatură
Pentru a parcurge istoricul bash, puteți utiliza câteva comenzi rapide de la tastatură utile de la bash. Apăsați aceste comenzi rapide și comenzile pe care le-ați utilizat anterior vor apărea la prompt.
- Arrow Sus sau Ctrl + P : Mergeți la comanda anterioară din istoricul dvs. Apăsați tasta de mai multe ori pentru a merge înapoi prin comenzile pe care le-ați utilizat.
- Arrow Down sau Ctrl + N : Mergeți la următoarea comandă din istoricul dvs. Apăsați tasta de mai multe ori pentru a merge înainte prin comenzile pe care le-ați utilizat.
- Alt + R : Reveniți orice modificări la o comandă pe care ați tras-o din istoricul dvs. dacă l-ați editat pe linia curentă.
Bash are, de asemenea, un mod special de "recall" pe care îl puteți utiliza pentru a căuta comenzi pe care le-ați rulat anterior, mai degrabă decât să le deplasați unul câte unul.
- Ctrl + R : Amintiți ultima comandă care corespunde caracterelor pe care le furnizați. Apăsați această comandă rapidă și începeți să tastați pentru a căuta istoricul bash pentru o comandă.
- Ctrl + O : Rulați comanda pe care ați găsit-o cu ajutorul Ctrl + R.
- Ctrl + G : Lăsați modul de căutare istoric fără a rula o comandă.
Vizualizați istoricul bashului
Puteți imprima întregul istoric de bash pe ecran executând o singură comandă:
historyVeți vedea o listă a tuturor comenzilor din istoricul bash, împreună cu un număr în partea stângă a fiecăruia. Comanda cu "1" de lângă ea este cea mai veche comandă din istoricul dvs. bash, în timp ce comanda cu cel mai mare număr este cea mai recentă.
Puteți face orice doriți cu ieșirea. De exemplu, puteți să-l conduceți la grepcommand pentru a căuta istoricul comenzilor. Istoria
grep your_searchPuteți, de asemenea, să-l conduceți la comanda coadă pentru a vedea doar un număr mic de comenzi recente pe care le-ați executat. De exemplu, următoarea comandă ar arăta ultimele 5 intrări din istoricul dvs. Istoria
tail -5Comenzi de rulare din istoricul dvs.
Bash poate "extinde" rapid comenzile anterioare sau le poate extinde și modifica. Această caracteristică este cunoscută sub numele de "expansiune de istorie" și folosește un semn de exclamare, cunoscut sub numele de "bang".Doar tastați-le la prompt și apăsați pe Enter pentru a le rula ca și cum ați rula orice altă comandă.
Pentru a executa o comandă specifică din istoricul dvs. cu numărul său, utilizați următoarea comandă:
! #De exemplu, să presupunem că ați vrut să executați comanda a 12-a din istoricul bash. Aceasta este comanda cu un "12" la stânga acesteia când executați comanda de istorie. Ați tasta următoarea comandă.
12Pentru a relua ultima comandă pe care ați executat-o, tastați următoarele. Acest lucru are același efect ca apăsând o dată pe săgeata Sus pentru a vedea comanda anterioară și apoi apăsați Enter.
! !De asemenea, puteți să consultați o comandă un anumit număr de linii înapoi. De exemplu,! -2 ar executa cea de-a doua comandă pe care ați rulat-o.!!înseamnă același lucru ca! -1.
Această extindere funcționează oriunde pe linie. Puteți adăuga orice doriți înainte sau după!sau oricare dintre celelalte expresii din această secțiune. De exemplu, puteți introduce următoarea comandă pentru a relua ultima comandă pe care ați executat-o prin sudo, oferindu-i privilegii de root. Acest lucru este util în special dacă uitați să adăugați sudo înainte de a rula o comandă.
sudo! !Sau, de exemplu, puteți relua comanda anterioară și țeavă ieșirea ei în grep pentru a căuta un text.
! !|grep textPentru a căuta o comandă din istoricul dvs. și ao executa, tastați următoarele. Aceasta va rula ultima comandă care se potrivește cu textul pe care îl specificați:
! TextDeci, dacă ați rulat recent o comandă care a început cu ping, puteți executa următoarea comandă pentru ao căuta. Aceasta va căuta înapoi prin istoria dvs., găsiți cea mai recentă comandă care începe cu "pi" și executați-o imediat:
!Puteți adăuga un: p la oricare dintre extensiile de mai sus și bash va imprima comanda la terminal fără a o rula. Acest lucru este util dacă doriți să confirmați că selectați comanda corectă înainte să o executați.
! 12: p! !: p! Text: pReutilizarea argumentelor din istoricul dvs.
Bash vă permite, de asemenea, să executați o comandă nouă, dar să folosiți argumente din comenzile anterioare din istoria dvs. Acest lucru vă poate ajuta să reutilizați rapid argumentele lungi sau complicate, fără a fi nevoie să le retipăriți. Comanda
$Spre exemplu, să presupunem că ați executat comanda atingeți /home/chris/ some_long_file_name_you_dont_want_to_type_again. Acum doriți să executați comanda nano /home/chris/ some_long_file_name_you_dont_want_to_type_again. Mai degrabă decât să tastați întregul lucru de la zero, ați putea rula:
nano! $$! Ar face ca bash să completeze automat ultimul argument din comanda anterioară.
Acest lucru umple doar ultimul argument. Deci, dacă rulați ping google.com -c 4 și apoi executați ping! $, Acest lucru se va extinde doar la "ping 4".
Pentru a rezolva această situație, puteți utiliza următorul truc pentru a extinde primul argument pe linie, mai degrabă decât ultima:
comanda! ^Deci, dacă ați pornit ping google.com -c 4 și apoi ați pornit ping! ^,bash ar extinde acest lucru la "ping google.com"
Pentru a completa toate argumentele folosite in comanda anterioara in loc de un singur argument, veti folosi urmatoarele: comanda
! *Deci, daca ati fugit ping!* în schimb, bash va completa automat toate argumentele pe care le-ați utilizat în comanda precedentă
Puteți folosi același truc pe care îl utilizați pentru a rula comenzi din istoria dvs. pentru a obține argumente de la acestea. Utilizați formularul de mai jos: comanda
abc:#De exemplu, am executat mai devreme comanda sudo hostname ubuntu. Dacă executăm următoarea comandă, bash va căuta înapoi prin istorie pentru a găsi ultima comandă începând cu literele pe care le tastăm și vom completa argumentul specificat de noi.vom rula ecou! su: 2, bash va căuta înapoi pentru a găsi ultima comandă care începe cu "su" și completați al doilea argument, care este "ubuntu".
Alte trucuri funcționează așa cum v-ați aștepta. De exemplu, înlocuirea numărului cu un asterisc, cunoscut sub numele de wildcard, determină bash să completeze toate argumentele din comanda:
comanda! Abc: *Rerun Comanda precedentă și modificați-o
Bash vă permite, de asemenea, reluarea comenzii anterioareși specificați ceva ce ar trebui schimbat. Acest lucru poate fi util pentru corectarea unei greșeli într-o comandă.De exemplu, următoarea comandă va relua comanda anterioară, înlocuind textul "abc" cu textul "xyz".
^ abc ^ xyzDe exemplu, dacă ați pornit în mod accidental ping gogle.com, ați putea rula ^ gog ^ goog și bash ar executa comanda ping google.com.
În cazul în care istoricul dvs. este stocat și cum să îl ștergeți
Coșul bash stochează istoricul comenzilor pe care le-ați executat în fișierul istoric al contului de utilizator la ~ /. bash_history în mod implicit. De exemplu, dacă numele de utilizator este bob, veți găsi acest fișier la /home/bob/. bash_history.
Deoarece istoricul dvs. este stocat într-un fișier, acesta persistă între sesiuni. Puteți rula niște comenzi, deconectați-vă, reveniți a doua zi și aceste comenzi vor fi încă în fișierul istoric gata pentru vizualizare și utilizare. Fiecare cont de utilizator are propriul fișier istoric cu un istoric de comandă separat.
Pentru a șterge istoricul bash, puteți executa următoarea comandă.Aceasta șterge conținutul fișierului. bash_history al contului dvs. de utilizator: istoricul
-cBash memorează numai un număr limitat de comenzi în mod prestabilit, împiedicând creșterea fișierului istoric prea mare. Numărul de intrări de istoric pe care le memorează bash este controlat de HISTSIZEvariable. Valoarea prestabilită este de obicei 500 sau 1000 de intrări. Puteți rula următoarea comandă pentru a vedea dimensiunea istoricului de bash din sistemul dvs.
echo $ HISTSIZEPentru a seta istoricul la zero, executați următoarea comandă.
HISTSIZE = 0Pentru sesiunea curentă, bash nu va stoca toate intrările de istoric decât dacă executați o comandă ca HISTSIZE = 1000 pentru a o readuce la un anumit număr de intrări.
Cum să ignorați spațiile și duplicatele
Bash vă permite să ignorați intrările de istoric care încep cu un spațiu dacă setați HISTCONTROLvariable la ignorespace.
HISTCONTROL = ignorespaceTastați un spațiu înainte de o comandă înainte de ao executa în shell-ul bash și comanda va funcționa normal, dar nu va apărea în istoricul dvs. dacă aveți această variabilă activată.Acest lucru vă permite să păstrați istoricul dvs. puțin mai curat, alegeți să rulați comenzi fără ca acestea să apară în istoricul dvs.
Bash vă permite, de asemenea, să ignorați comenzile duplicate care vă pot dezordine istoria. Pentru a face acest lucru, setați HISTCONTROL la ignoredups.
HISTCONTROL = ignoredupsPentru a utiliza atât funcția ignorespace, cât și ignoredups, setați variabila HISTCONTROL la ignoreboth.
HISTCONTROL = ignorebothRețineți că variabilele bash pe care le setați vor persista doar pentru sesiunea curentă.Va trebui să le adăugați în fișierul. bashrc al contului dvs. de utilizator pentru a seta automat aceste valori în fiecare sesiune bash pe care o porniți, dacă preferați acest lucru.
Cochilia bash este o unealtă complexă cu multe alte opțiuni decât acestea. Consultați secțiunile Istoricul Bash și Istoria expansiunii în manualul oficial de bash informații mai detaliate și alte trucuri avansate pe care le puteți utiliza.