Rheinwerk Computing Linux - 7 The Shell

7.11 Lucrul eficient cu Bash

Acest subcapitol este destinat să vă arate cum vă puteți face munca zilnică cu bash (Bourne-Again-Shell) mai ușoară.

ultima comandă

7.11.1 Istoricul comenzilor

Ar trebui să știți cu siguranță cea mai simplă caracteristică bash care funcționează pentru dvs.: istoricul comenzilor. Salvează cele mai recente comenzi introduse. Le puteți accesa și nu trebuie să le reintroduceți pentru a le accesa din nou. În plus, bash oferă posibilitatea de a edita aceste comenzi.

Un simplu apel la istorie vă oferă o imagine de ansamblu asupra comenzilor conținute în istorie. Introducând un număr, veți vedea ultimele n intrări.

Listare 7.59 Istoria

Puteți șterge intrările nedorite din istoric folosind history -d din lista de istoric.

Derularea istoriei

De exemplu, să presupunem că comanda find/usr/local/bin -name "nume fișier" a fost executată. Acum doriți să rulați aceeași comandă cu un nume de fișier diferit. Pentru a nu mai trebui să tastați totul din nou, puteți încărca ultima comandă introdusă în linia de comandă cu tasta cursor sus.

Apăsând din nou tasta săgeată sus, bash reîncarcă comanda care a fost apelată înainte de ultima în linia de comandă și așa mai departe - este atât de simplu. Cu tasta săgeată în jos puteți Căutați din nou în istoric înainte.

Editarea în linia de comandă

Pentru a adapta vechiul apel de căutare, noul nume de fișier trebuie inserat în vechea intrare de comandă. Puteți utiliza tastele cursorului pentru a vă deplasa la stânga și la dreapta în linia de comandă și ștergeți și inserați caractere în toate pozițiile.

Semnul de exclamare are o funcție foarte specială în bash. Este folosit pentru a apela comenzi din istoric.

Puteți repeta ultima comandă introdusă cu două semne de exclamare:

Listarea 7.60 Executând din nou ultima comandă

De asemenea, puteți repeta una dintre comenzile stocate în istoricul comenzilor specificând numărul comenzii. Puteți obține numărul istoric al unei comenzi apelând comanda istoric. Comanda este apoi executată din nou cu! N (unde n este numărul comenzii).

Listarea 7.61 !n

Căutați comenzi

O caracteristică foarte utilă a bash-ului este că puteți căuta comenzi prin specificarea primelor caractere ale unei comenzi. Acum probabil că vă întrebați ce vă puteți imagina prin asta? Așa cum se întâmplă adesea, această funcționalitate poate fi explicată cel mai bine cu un exemplu.

[ex.] Un utilizator introduce mai întâi comanda uname și apoi timpul de funcționare a comenzii. Acum ar dori să înceapă din nou timpul de funcționare, mai târziu uname, fără a introduce din nou aceste comenzi. Prima privire în istoricul comenzilor este adesea greoaie. Prin urmare, utilizatorul folosește căutarea comenzilor.

Cea mai simplă variantă este următoarea: Utilizatorul introduce un semn de exclamare și imediat după aceea prima literă a comenzii, adică un «u» «. Apoi, shell-ul apelează ultima comandă care a început cu „u”, adică timpul de funcționare. Cu toate acestea, dacă utilizatorul dorește acum să apeleze uname, nu este suficient să puneți un «u» după semnul exclamării. Pentru a face acest lucru, trebuie specificată a doua literă a comenzii, adică un «n», după care ultima comandă care a început cu «un» se execută din nou:

Listarea 7.62 Căutarea comenzilor

Puteți găsi ultima comandă care conținea un anumit șir apelând !? alearga din nou.

Din punga de trucuri

Acest lucru este mult mai convenabil de făcut cu combinația de taste Ctrl + R. Cu această procedură, bash vă arată automat ce comandă ar fi executată în timp ce editați linia de comandă:

Listarea 7.63 Ctrl + R

Înlocuiți părți ale comenzilor vechi

Vă amintiți apelul repetat pentru a găsi care a trebuit editat pentru a căuta un nou nume de fișier? Acest lucru poate fi simplificat din nou în bash dacă comanda find a fost ultima introdusă. Prin specificarea șirului de caractere care trebuie înlocuit în ultima comandă, o comandă veche poate fi executată modificată.

Respectivul apel de găsire arăta astfel: find/usr/local/bin -name "file name". Pentru a căuta numele fișierului zsh și a utiliza aceeași comandă, comanda veche trebuie manipulată conform modelului \ Alter-String \ NewString \, adică:

Listarea 7.64 Comanda find cu un nou nume de fișier

7.11.2 Completarea automată a numelor de fișiere

O caracteristică practică similară, precum istoricul comenzilor, este completarea automată a numelor de fișiere. Este controlată în bash de tasta tab. Deoarece programele afișează și fișiere sub Unix, această caracteristică funcționează în mod natural și cu ele.

Când se utilizează tasta Tab, trebuie făcută o distincție între două cazuri:

  • Există un singur fișier care se potrivește.
  • Există mai multe fișiere potrivite.

Doar un candidat

Pentru primul caz vom crea un exemplu de director în care vom pune un fișier numit abc.txt.

Listarea 7.65 Creați un exemplu de director cu un singur fișier

Dacă folosim un program precum/bin/ls, căruia îi pasăm acest fișier ca parametru, trebuie doar să apăsăm tasta Tab, deoarece există un singur fișier în director și bash setează automat numele fișierului la Poziția dorită în intrare.

[De exemplu] Încercați-l singur: Treceți la noul director, introduceți ls și un spațiu și apăsați tasta Tab. Bash ar trebui să scrie automat numele fișierului abc.txt în linia de comandă.

Acum creăm un fișier cu numele xyz.txt în director. Dacă repetați ultimul exemplu în noile condiții, acesta nu va funcționa cu ușurință. Bash nu știe de la sine care dintre cele două fișiere să treacă ca parametru. Trucul funcționează acum în așa fel încât să fie introduse cât mai multe caractere ale numelui fișierului până când există un singur nume de fișier care se potrivește cu primele caractere - în acest caz este suficientă prima literă a fișierului (fie un «a», fie un » x «), deoarece niciun nume de fișier nu conține aceleași caractere. Dacă este apăsată din nou tasta Tab, bash va completa din nou numele fișierului.

Dar bashul poate face un pic de muncă pentru tine. Să presupunem că există două fișiere abc și abd într-un singur director. Dacă oricum nu există o alegere între caractere, apăsarea tastei Tab aduce întotdeauna aceste caractere pe monitor. Dacă apăsați tasta Tab într-un astfel de director, bash va scrie primele două caractere (deoarece acestea sunt oricum aceleași și trebuie să le introduceți) pe ecran. Apoi, trebuie doar să introduceți un «c» «sau» d «.

În cazul în care fișierul xyz este încă prezent în director, prima literă trebuie introdusă din nou, deoarece pot apărea din nou două cazuri.

Dacă există mai multe fișiere, puteți apăsa de două ori tasta Tab pentru a obține o imagine de ansamblu a fișierelor din director în timp ce introduceți comenzi. Apăsând acest lucru de două ori, bash vă oferă întotdeauna selecțiile de fișiere care sunt încă posibile în funcție de intrarea anterioară.

Acest lucru înseamnă în exemplu: Dacă ați avea din nou cele trei fișiere xyz, abc și abd în director, bash ar lista mai întâi toate cele trei. Dacă introduceți apoi un „a” și apăsați tasta Tab, bash vă oferă „b” (singura opțiune utilă) de pe ecran. Dacă faceți dublu clic pe tasta Tab din nou, bash va afișa acum cele două nume posibile de fișiere abc și abd.

Mai mult, tasta tab „este inteligentă”: la începutul unei intrări de shell, are sens doar o comandă executabilă - în consecință, sunt finalizate doar fișierele executabile sau încorporările shell.