Extinderea brațului este o tehnică utilă pentru a genera liste de șiruri care pot fi utilizate în scripturi și aliasuri și pe linia de comandă Linux. Economisiți timp și evitați greșelile introducând mai puțin.
Expansiunea brațului
Înainte de coaja de bash execută o comandă Într-o fereastră terminală sau o linie dintr-un script, verifică dacă trebuie să efectueze orice substituții pe comandă. Numele variabilelor sunt înlocuite de valorile lor, aliasurile sunt înlocuite de comenzile pe care le sună și se efectuează o expansiune. Expansiunea de brățară este o formă de expansiune susținută de bash.
Extinderea de bretele este disponibilă în cochilii moderne, dar ar putea fi lipsită de niște cochilii vechi. Dacă intenționați să utilizați expansiunea Brace în scripturi, asigurați-vă că invocați o cochilie care susține expansiunea de bretele, cum ar fi Bash:
Vom folosi bash pentru exemplele noastre.
Generarea listelor de șiruri ar putea părea mai mult de o noutate decât un beneficiu, dar oferă o anumită funcționalitate care poate economisi timp și apăsări de taste. Adesea, poate oferi o soluție simplă și elegantă la o problemă sau o cerință.
Expansiuni simple
O extindere a brațului este cuprinsă între o pereche de bretele "{}". Poate fi o listă de elemente separate prin virgulă sau o specificator de interval. Spațiile nu sunt permise în interiorul brațelor decât dacă ați înfășurat șirul în ghilimele "
"
".
Pentru o listă separată prin virgulă, procesul de expansiune ia fiecare element la rândul său și îl trece la comanda de apel. În acest exemplu, este
ecou
care pur și simplu
imprimă-le în fereastra terminalului
. Rețineți că viilele sunt ignorate.
Echo {una, două, trei, patru}
O listă poate fi cuvinte sau cifre.
Echo {1,2,3,4}
Ordinea elementelor listei este complet arbitrară.
ECHO (4,2,3,1)
Un interval de expansiune are un început și un caracter final conectat cu două perioade "
..
"Fără spațiu alb. Toate elementele de listă lipsă sunt furnizate automat de expansiune, astfel încât întreaga gamă de la caracterul de pornire la caracterul final să fie creată.
Aceasta va imprima cifrele de la 1 la 10.
Echo {1...10}
Numerotarea este arbitrară. Nu trebuie să înceapă la unul.
Echo {3..12}
Pot fi specificate intervale, astfel încât să ruleze înapoi. Aceasta va genera o listă de la cinci până la una.
ECHO {5..1}
Intervalele pot include numere negative.
Echo {4 ..- 4}
După cum am arătat anterior, o serie are un început și un scop caracter . Nu trebuie să fie un număr. Poate fi o scrisoare.
Echo {Q....}
Literele pot rula și înapoi.
Echo {f..o}
Folosind extinderea de bretele cu bucle
Puteți utiliza expansiunea de brățară cu game în bucle în scripturi.
pentru i în {3..7}
do
Echo $ I.
Terminat
Rangurile de expansiune a brațelor vă permit să utilizați caractere ca variabila buclă.
pentru i în {m..q}
do
Echo $ I.
Terminat
Buclele sunt de obicei folosite în scripturi, dar nu este nimic care să vă împiedice să le introduceți în linia de comandă pentru a vedea ce se va întâmpla.
pentru i în {3..7}; face echo-i $ i; Terminat
pentru i în {m..q}; face echo-i $ i; Terminat
Concatenarea și cuibarea
Două expansiuni adiacente nu acționează independent unul după celălalt. Ei interopera. Fiecare element din prima expansiune este acționat de fiecare element din a doua expansiune.
Echo {q....} {1..3}
Expansiunile pot fi, de asemenea, imbricate. O expansiune imbricată va acționa asupra elementului imediat precedat-o.
ECHO {PARTE-1, PARTE-2 {A, B, C, D}, Partea 3}
De asemenea, puteți cuibi extinderile prin crearea unei liste de expansiuni delimitate prin virgulă.
Echo {{5..0}, {1..5}}
Preambul și PostScript
Puteți plasa text înainte și după o expansiune de bretele să aibă acest text inclus în rezultatele expansiunii. Textul pus în fața unei expansiuni este numit preambulul, în timp ce textul plasat în spatele unei expansiuni de bretele se numește PostScript.
Această comandă utilizează un preambul.
Capitolul ecou {1..3}
Acest exemplu utilizează un postscript:
Echo {conținut, hârtie, bilbiografie} .md
Și această comandă utilizează ambele.
ECHO Capitolul - {1..4} .md
Extinderea numelor de fișiere și a directoarelor
Așa cum probabil ați ghicit până acum, una dintre principalele utilizări ale expansiunilor de bretele este crearea de nume de fișiere și de director care pot fi transmise altor comenzi. Am folosit-o
ecou
Ca o modalitate convenabilă de a vedea exact ceea ce se întâmplă atunci când este declanșată o expansiune. Puteți înlocui orice comandă care face nume de fișiere sau nume de directoare ca intrare și utilizează expansiunea de bretele cu aceasta.
La rapid
Creați unele fișiere.
, utilizare
atingere
:
Atingeți fișierul - {1..4} .txt
ls * .txt
Dacă aveți multe fișiere cu același nume de bază, dar diferite extensii de fișiere și doriți să efectuați o operațiune pe un subset al acestora, expansiunile de bretele pot ajuta. Aici, comprimăm un subset de fișiere care au "program" ca nume de bază într-un fișier zip numit "source-code.zip".
Directoarele de dezvoltare conțin o mulțime de fișiere care vor avea același nume de bază ca și programul dvs. principal. De obicei, nu doriți să vă copiați sau să distribuiți fișiere precum fișierele obiect ".o". Aceasta este o modalitate curată de a include doar tipurile de dosare de interes.
Programul de coduri sursă zip {.C, .h, .css}
Această comandă va face o copie a unui fișier și va adăuga ".bak" la acesta, făcând o copie de rezervă a fișierului original. Un punct interesant de remarcat este că extinderea de bretele conține o listă separată prin virgulă, dar primul element este gol. Dacă nu am fi inclus virgula, expansiunea nu ar fi avut loc.
CP Brace / New / Prog-1.c {,. Bak}
LS Brace / New / Prog-1.C.bak
Pentru a efectua o anumită acțiune pe două fișiere în diferite directoare, putem folosi o extindere a brațelor în calea către fișiere.
În acest exemplu, directorul "Brace" conține două subdirectoare, unul numit "nou" și unul numit "vechi". Acestea conțin versiuni diferite ale aceluiași set de fișiere de cod sursă. Vom folosi
dig
program pentru a vedea diferențele dintre cele două versiuni ale "Prog-1.c".
Diff Brace / {nou, vechi} /prog-1.c
Dacă aveți un schelet standard de directoare pe care trebuie să le creați la începutul unui proiect, le puteți crea rapid folosind expansiunea de bretele. În
Mkdir.
-p.
(Părinte)
creează orice directoare părinte lipsă
când este creat un director de copii.
Mkdir -p {sursa, construi, om, ajutor {/ pagini, / yelp, / imagini}}
copac
Puteți utiliza expansiunea de bretele cu
wget.
la
Descărcați mai multe fișiere
.
În această comandă, vom descărca fișiere din două directoare, numite "Test1" și "Test2". Fiecare director conține două fișiere numite "imagine1" și "imagine2".
wget https://www.url-of-your-choice.com/test`,2 ●/picture 001,002 ].jpg
Listarea fișierelor vă arată fișierele care au fost preluate și cum
wget.
Renamează fișiere pentru a evita ciocnirile de nume cu fișierele existente.
Imaginea LS *. *
Îmbrățișați brațul
Se pare că expandarea parantezelor este un alt unul dintre mai bine păstrate secrete Linux . Mulți oameni îmi spun că n-au mai auzit de expansiune bretele, în timp ce alții mă informează că este unul dintre trucurile lor preferate linie de comandă.
Dă-o încercare și tocmai s-ar putea găsi drumul în setul de linie de comandă-go-to trucuri.