Aix tech sfat: bye-bye loops-utilizați comanda „apply” în schimb

fundal tehnologie abstractă cu forme hexagonale
unul dintre cele mai bine păstrate secrete ale liniei de comandă AIX este comanda „apply”.

n-ai auzit de ea? Bine ai venit în club. Doi colegi și cu mine am avut peste 60 de ani de experiență combinată pe AIX și, între noi, nu am întâlnit niciodată „apply”.

deci, ce face și de ce ar trebui să o înveți? Foarte simplu, „apply” va rula o comandă pentru un set de parametri. Este util, de exemplu, dacă doriți să modificați un parametru de reglare pentru un set întreg de discuri sau alte dispozitive. Sau poate trebuie să enumerați câteva informații dintr-un număr de fișiere. Prietenul tău este „aplică”.

dacă sunteți deja familiarizați cu unele scripting de bază, veți vedea, probabil, unele asemănări cu care rulează o buclă „pentru”.

aici am e o utilizare de bază a comenzii apply. Să aplicăm comanda” echo ” la o listă de cuvinte.

apply "echo" all cows eat grassallcowseatgrass

nu teribil de interesant, cred, dar sintaxa este o afacere bună mai ușor decât folosind un „pentru” buclă. Iată cum ar arăta:

for i in all cows eat grassdoecho $idone

cu ” aplicați „trebuie doar să specificați” aplicați”și comanda („echo”, în acest exemplu).

ce zici de înlocuirea cuvintelor despre obiceiurile culinare bovine cu ceva puțin mai tehnic? Voi enumera atributele pentru un set de volume fizice.

comanda pentru a lista atributele ar fi:

lsattr –El hdiskN

deci, pentru a utiliza comanda „aplicați”, ar fi:

apply "lsattr –El" hdisk0

șansele sunt că doriți să faceți acest lucru pentru un număr de discuri; poate chiar toate discurile de pe sistemul AIX. Pentru a lista discurile, puteți utiliza această comandă:

lsdev –c disk –F name

aceasta ar produce o listă de discuri, cum ar fi:

hdisk0hdisk1hdisk2

și așa mai departe.

în comanda aplicare, în loc să listați aceste discuri unul câte unul, puteți specifica comanda pentru a le lista. Trebuie să fie fie în backsticks:

`lsdev –c disk –F name`

sau utilizați sintaxa $( command ) :

$(lsdev –c disk –F name)

acum este timpul să punem totul împreună. Deoarece comanda lsattr pe care o aplicăm listei de discuri are spații în ea, trebuie să o puneți între ghilimele:

apply "lsattr –El" $(lsdev –c disk –F name)

acest lucru poate fi foarte util dacă doriți să faceți modificări, de asemenea.

iată comanda pentru a schimba adâncimea cozii pentru un disc:

chdev –l hdisk0 –a queue_depth=16 –P

pentru a face acest lucru pentru toate discurile, ați înlocui numele discului (hdisk0) cu %1. Aceasta este pentru a indica primul parametru generat în fiecare dintre listele comenzii apply.

aici vom merge:

apply "chdev –l %1 –a queue_depth=16 –P" $(lsdev –c disk –F name)

Iată cum se face o comandă de coadă pentru a privi ultimele 20 de linii ale mai multor fișiere jurnal:

apply "tail -20 %1" $(ls *.log)

ai putea crede că ai putea rula doar acest:

tail -20 *.log

dar comanda tail poate procesa doar un fișier la un moment dat.

Iată un alt exemplu. Să presupunem că doriți să faceți o copie de rezervă a unui set de fișiere înainte de a le schimba. Există o mulțime de modalități de a face acest lucru, dar comanda apply ar funcționa foarte bine:

apply "cp %1 %1.bak" $(ls *.cfg)

odată ce te obișnuiești cu sintaxa ușor neobișnuită a comenzii apply, probabil că vei începe să o iubești. Îl folosesc tot timpul, mai ales dacă trebuie să obțin o comandă care rulează într-o singură linie.

după ce a lucrat la sistemele IBM din 1991, Anthony English a văzut cum AIX și virtualizarea pot gestiona toate tipurile de medii de afaceri. Este un autor recunoscut în domeniul IT și scrie despre îmbunătățirea sistemelor de afaceri prin blogul său la http://anthonyenglish.com.au. Anthony are sediul în Sydney, Australia, împreună cu soția și cei șapte copii ai săi.

Leave a Reply

Lasă un răspuns

Adresa ta de email nu va fi publicată.