Ich möchte in der Lage sein, mehrere Befehle in derselben Datei in einer einzigen Zeile auszuführen. Die Art und Weise, wie ich das derzeit mache, ist:
commandA file && commandB file && perl -ne '...' file
Mein Bauchgefühl sagt mir, dass es eine Möglichkeit geben sollte, das Dateinamenargument nur einmal anzugeben und es gleichzeitig durch xargs
oder etwas Ähnliches an beide Befehle weiterzuleiten :
find file | xargs commandA && xargs commandB && xargs perl -ne '...'
Wenn ich das versuche, wird nur der erste Befehl ausgeführt. Wie kann ich erreichen, was ich tun möchte?
command-line
Zaid
quelle
quelle
Für Shells wie Bash, Korn und Z, die eine Prozessersetzung aufweisen, können Sie Folgendes tun:
quelle
Sie können xargs verwenden, um eine Befehlszeile zu erstellen, z.
Leiten Sie das Obige einfach in Bash, um es auszuführen:
Erweitern des Beispiels auf alle * .c-Dateien im aktuellen Verzeichnis (Ausblenden des ls hier, um eine Ersetzung des Shell-Alias zu verhindern):
quelle
find . -name "*enums*" | xargs -i echo -e echo {}\; ls -lh {}\; echo -e '\n\n' | bash
Ich würde selbst nicht dafür stimmen. Es ist albern und gefährlich, aber nur um die Möglichkeiten aufzulisten, gibt es:
for cmd in "commandA" "commandB" "perl -ne '...'" ; do eval $cmd file ; done
quelle