BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Befehl mit unterschiedlichen Parametern mehrmals ausführen

Manche Programme lassen sich nicht mit mehreren Parameter ausführen:

# atacontrol status ar0 ar1
usage:  atacontrol <command> args:
        atacontrol list
        atacontrol info channel
        atacontrol attach channel
        atacontrol detach channel
        atacontrol reinit channel
        atacontrol create type [interleave] disk0 ... diskN
        atacontrol delete array
        atacontrol addspare array disk
        atacontrol rebuild array
        atacontrol status array
        atacontrol mode device [mode]
        atacontrol cap device
        atacontrol spindown device [seconds]

Dies kann mit Hilfe von apply umgangen werden. Im folgenden Beispiel wird zuerst der RAID-Status von ar0, danach von ar1 abgefragt. Durch die -d Option wird nur angezeigt was ausgeführt würde, ohne die Befehle auszuführen:

# apply -d "atacontrol status %1" ar0 ar1
exec atacontrol status ar0
exec atacontrol status ar1
# apply "atacontrol status %1" ar0 ar1
ar0: ATA RAID1 status: READY
 subdisks:
   0 ad4  ONLINE
   1 ad6  ONLINE
ar1: ATA RAID1 status: READY
 subdisks:
   0 ad5  ONLINE
   1 ad7  ONLINE

Im folgenden Beispiel wird mit der -2 Option angegeben, dass jeweils zwei Parameter aus der Liste zusammen ausgeführt werden.

# apply -d -2 cmp a1 b1 a2 b2 a3 b3
exec cmp a1 b1
exec cmp a2 b2
exec cmp a3 b3
# apply -2 cmp a1 b1 a2 b2 a3 b3
a1 b1 differ: char 1, line 1
a2 b2 differ: char 1, line 1
a3 b3 differ: char 1, line 1

Auf FreeBSD ist apply standardmässig im Basissystem vorhanden. Mehr Informationen zu apply findet man in der Manpage apply(1).

 Permalink

Comments

No new comments allowed (anymore) on this post.