Pagina principala » HOWTO » Cum să utilizați istoricul basului în terminalul Linux sau macOS

    Cum să utilizați istoricul basului în terminalul Linux sau macOS

    Baza shell este mediul terminal standard inclus în majoritatea distribuțiilor Linux, inclus în MacOS și disponibil pentru instalare pe Windows 10. Îș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.

    • Săgeata în 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.
    • Sageata in jos 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-vă ultima comandă care se potrivește cu caracterele pe care le furnizați. Apăsați această scurtătură ș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 lui Ctrl + R.
    • Ctrl + G: Lăsați modul de căutare istoric fără a rula o comandă.

    Vizualizați istoricul dvs. bash

    Puteți imprima întregul istoric de bash pe ecran executând o singură comandă:

    istorie

    Veți vedea o listă a tuturor comenzilor din istoricul dvs. bash, împreună cu un număr în partea stângă a fiecăruia. Comanda cu un "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, ați putea să o conduceți la grepcomanda pentru a căuta istoricul comenzilor.

    istorie | grep your_search

    Ați putea, de asemenea, să o conduceți la coadă comanda pentru a vizualiza 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..

    istorie | coada -5

    Executați comenzi din istoricul dvs.

    Bash poate să "extindă" rapid comenzile anterioare sau să le extindă și să le modifice. 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 rula 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 istoria dvs. bash. Aceasta este comanda cu un "12" la stânga de ea atunci când rulați istorie comanda. Ați tasta următoarea comandă.

    !12

    Pentru a relua ultima comandă pe care ați executat-o, tastați următoarele. Acest lucru are același efect ca și apăsarea o dată a săgeții 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 comanda a doua până la ultima comanda pe care ai fugit-o. !! înseamnă același lucru ca și !-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ă prin care ați trecut 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șire ei la grep pentru a căuta un text.

    !! | text grep

    Pentru a căuta o comandă în istoricul dvs. și a o rulați, tastați următoarele. Aceasta va executa ultima comandă care se potrivește cu textul pe care îl specificați:

    !text

    Deci, dacă ați rulat recent o comandă care a început cu ping, puteți rula următoarea comandă pentru ao căuta. Aceasta va căuta înapoi prin istoria dvs., pentru a găsi comanda cea mai recentă care începe cu "pi"Și executați imediat:

    !pi

    Puteți adăuga o : p la oricare dintre expansiunile 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 de a o rula.

    !12: p
    !!: p
    !Text: p

    Reuzați argumentele din istoria dvs.

    Bash vă permite, de asemenea, să executați o comandă nouă, dar utilizați argumente din comenzile anterioare din istoric. Acest lucru vă poate ajuta să reutilizați rapid argumentele lungi sau complicate, fără a trebui să le retipăriți.

    comanda!

    De 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. În loc să tastați întregul lucru de la zero, puteți rula:

    nano! $

    !$ ar face ca bashul să completeze automat ultimul argument din comanda anterioară.

    Acest lucru completează numai ultimul argument. Deci, dacă fugi ping google.com -c 4 și apoi alerga ping! $ , aceasta s-ar extinde doar la "ping 4„.

    Pentru a remedia această situație, puteți utiliza următorul truc pentru a extinde primul argument pe linie, și nu pe ultima:

    comanda! ^

    Dacă ai fugit ping google.com -c 4 și apoi a fugit ping! ^ , bash ar extinde acest lucru la "ping google.com ".

    Pentru a completa toate argumentele utilizate în comanda anterioară, în loc de un singur argument, ați folosi următoarele:

    comandă! *

    Dacă ai fugit ping! * în schimb, bash va completa automat toate argumentele pe care le-ați utilizat în comanda anterioară.

    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. Folosiți doar formularul de mai jos.

    comanda! abc: #

    De exemplu, am executat comanda sudo hostname ubuntu mai devreme. Dacă executăm următoarea comandă, bash va căuta înapoi prin istorie pentru a găsi ultima comandă care începe cu literele pe care le scriem și vom completa argumentul pe care îl specificăm. Deci, dacă fugim echo! 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, face ca bash să completeze toate argumentele din comandă:

    comanda! abc: *

    Renunțați la Comanda anterioară și modificați-o

    Bash vă permite, de asemenea, să reluați comanda anterioară și să specificați ceva care ar trebui modificat. Acest lucru poate fi util pentru corectarea unei mostre într-o comandă. De exemplu, următoarea comandă va relua comanda anterioară, înlocuind textul "abc"În ea cu textul"xyz„.

    ^ Abc ^ xyz

    De exemplu, dacă ați alergat accidental ping gogle.com, ai putea apoi să fugi ^ ^ Gog goog și bash ar executa comanda ping google.com in schimb.

    În cazul în care istoricul dvs. este stocat și cum să-l ștergeți

    Cache-ul bash stochează istoricul comenzilor pe care le-ați executat în fișierul istoric al contului dvs. de utilizator la ~ / .bash_history în mod implicit. De exemplu, dacă numele dvs. 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 de 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:

    istoric -c

    Bash își amintește doar un număr limitat de comenzi în mod implicit, împiedicând creșterea fișierului istoric prea mare. Numărul de intrări de istoric pe care le memorează bash este controlat de HISTSIZEvariabil. Valoarea implicită este de obicei 500 sau 1000 de intrări. Puteți rula următoarea comandă pentru a vedea dimensiunea istoricului de bash în sistemul dvs..

    echo $ HISTSIZE

    Pentru a seta istoricul la zero, executați următoarea comandă.

    HISTSIZE = 0

    Pentru sesiunea curentă, bash nu va stoca toate intrările de istorie decât dacă executați o comandă ca HISTSIZE = 1000 pentru ao 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ă ați setat HISTCONTROLvariabil la ignorespace.

    HISTCONTROL = ignorespace

    Tastați un spațiu înainte de o comandă înainte de ao executa în shell-ul bash, iar 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 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 istoricul. Pentru a face acest lucru, setați HISTCONTROL la ignoredups.

    HISTCONTROL = ignoredups

    Pentru a utiliza ambele ignorespace și ignoredups caracteristică, setați HISTCONTROL variabil la ignoreboth.

    HISTCONTROL = ignoreboth

    Rețineți că variabilele bash pe care le-ați setat 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 că.

    Cochilia bash este o unealtă complexă cu mai multe opțiuni decât acestea. Consultați secțiunile Bash History and Builtins Expansion History din manualul oficial bash informații mai detaliate și alte trucuri avansate pe care le puteți utiliza.