AIK tech tip: Bye-bye loops – brug kommandoen ‘Anvend’ i stedet

abstrakt teknologi baggrund med sekskantede former
en af de bedst bevarede hemmeligheder i kommandolinjen er kommandoen “Anvend”.

aldrig hørt om det? Velkommen i klubben. To kolleger og jeg havde over 60 års kombineret erfaring med AIKS, og mellem os var vi aldrig en gang stødt på “Ansøg”.

så hvad gør det, og hvorfor skal du lære det? Meget enkelt,” apply ” vil køre en kommando for et sæt parametre. Nyttigt, hvis du vil ændre en indstillingsparameter for et helt sæt diske eller andre enheder. Eller måske skal du liste nogle oplysninger fra en række filer. Din ven er “anvend”.

hvis du allerede er bekendt med nogle grundlæggende scripting, vil du sandsynligvis se nogle ligheder med at køre en “for” loop.

her er jeg en grundlæggende brug af kommandoen Anvend. Lad os anvende kommandoen “echo” på en liste med ord.

apply "echo" all cows eat grassallcowseatgrass

ikke frygtelig spændende, antager jeg, men syntaksen er en hel del lettere end at bruge en “for” loop. Sådan ser det ud:

for i in all cows eat grassdoecho $idone

med ” Anvend “behøver du kun at angive” Anvend”og kommandoen (“echo”, i dette eksempel).

hvad med at erstatte ordene om kvæg kulinariske vaner med noget lidt mere teknisk? Jeg vil liste attributterne for et sæt fysiske volumener.

kommandoen til at liste attributterne ville være:

lsattr –El hdiskN

så for at bruge kommandoen “Anvend” ville det være:

apply "lsattr –El" hdisk0

chancerne er, at du gerne vil gøre dette for et antal diske; måske endda alle diske på dit system. For at liste diskene kan du bruge denne kommando:

lsdev –c disk –F name

det ville producere en liste over diske, såsom:

hdisk0hdisk1hdisk2

og så videre.

i kommandoen Anvend, i stedet for at angive disse diske en efter en, kan du angive kommandoen for at liste dem. Det skal være enten i backticks:

`lsdev –c disk –F name`

eller brug syntaksen $( kommando ) :

$(lsdev –c disk –F name)

nu er det tid til at sætte det hele sammen. Da kommandoen lsattr, som vi anvender på listen over diske, har mellemrum i den, skal du sætte den i citater:

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

dette kan være virkelig praktisk, hvis du også vil foretage ændringer.

her er kommandoen til at ændre kødybden for en disk:

chdev –l hdisk0 –a queue_depth=16 –P

for at gøre det for alle diske, ville du erstatte disknavnet (hdisk0) med %1. Dette er for at angive den første parameter, der genereres i hver af listerne i kommandoen Anvend.

her går vi:

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

Sådan gør du en hale kommando for at se på de sidste 20 linjer i flere logfiler:

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

du tror måske, du kunne bare køre dette:

tail -20 *.log

men tail-kommandoen kan kun behandle en fil ad gangen.

her er et andet eksempel. Antag, at du vil lave en sikkerhedskopi af et sæt filer, før du ændrer dem. Der er mange måder at gøre dette på, men kommandoen Anvend ville fungere meget godt:

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

når du først er vant til den lidt usædvanlige syntaks for kommandoen Anvend, vil du sandsynligvis begynde at elske den. Jeg bruger det hele tiden, især hvis jeg har brug for at få en kommando til at køre i en enkelt linje.

efter at have arbejdet med IBM-systemer siden 1991 har Anthony English set, hvordan virtualisering og virtualisering kan håndtere alle former for forretningsmiljøer. Han er en velkendt forfatter inden for IT-området, og han skriver om forbedring af forretningssystemer gennem sin blog på http://anthonyenglish.com.au. Anthony er baseret i Sydney, Australien, med sin kone og hans syv børn.

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.