Linux Tutorial Teil 4 - erstes praktisches Bash-Script
Inhaltsverzeichnis:
- Verwendung des Linux-Befehls
xargs - Anzeigen des Befehls und Auffordern des Benutzers
- So begrenzen Sie die Anzahl der Argumente
- So führen Sie mehrere Befehle aus
- Festlegen eines Trennzeichens
- So lesen Sie Elemente aus einer Datei
- Verwenden von
xargsmitfind - Verwenden von Xargs zum Trimmen von Leerzeichen
- Fazit
Mit dem Dienstprogramm
xargs
können Sie Befehle über die Standardeingabe erstellen und ausführen. Es wird normalerweise in Kombination mit anderen Befehlen über Rohrleitungen verwendet.
Mit
xargs
können Sie Standardeingaben als Argument für Befehlszeilendienstprogramme wie
mkdir
und
rm
mkdir
.
In diesem Lernprogramm werden die Grundlagen der Verwendung des Befehls
xargs
.
Verwendung des Linux-Befehls
xargs
xargs
liest Argumente aus der Standardeingabe, die durch Leerzeichen oder Zeilenumbrüche getrennt sind, und führt den angegebenen Befehl unter Verwendung der Eingabe als Befehlsargumente aus. Wenn kein Befehl angegeben wird, lautet die Standardeinstellung
/bin/echo
.
Die Syntax für den Befehl
xargs
lautet wie folgt:
xargs]
Das grundlegendste Beispiel für die Verwendung von
xargs
wäre, mehrere durch Leerzeichen getrennte Zeichenfolgen mit einer Pipe an
xargs
und einen Befehl auszuführen, der diese Zeichenfolgen als Argumente verwendet.
echo "file1 file2 file3" | xargs touch
Im obigen Beispiel leiten wir die Standardeingabe an
xargs
, und der Befehl
touch
wird für jedes Argument ausgeführt, wodurch drei Dateien erstellt werden. Dies ist das gleiche, als ob Sie laufen würden:
Anzeigen des Befehls und Auffordern des Benutzers
Um den Befehl vor der Ausführung auf dem Terminal auszudrucken, verwenden Sie die Option
-t
(
--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
Geben Sie
y
oder
Y
, um den Befehl zu bestätigen und auszuführen:
touch file1 file2 file3 ?…y
Diese Option ist nützlich, wenn destruktive Befehle ausgeführt werden.
So begrenzen Sie die Anzahl der Argumente
Standardmäßig wird die Anzahl der an den Befehl übergebenen Argumente durch das Systemlimit bestimmt.
Die Option
-n
(
--max-args
) gibt die Anzahl der Argumente an, die an den angegebenen Befehl übergeben werden sollen.
xargs
führt den angegebenen Befehl so oft aus, bis alle Argumente erschöpft sind.
Im folgenden Beispiel ist die Anzahl der Argumente, die von der Standardeingabe gelesen werden, auf 1 begrenzt.
echo "file1 file2 file3" | xargs -n 1 -t touch
Wie Sie der ausführlichen Ausgabe unten entnehmen können, wird der Befehl touch für jedes Argument separat ausgeführt:
touch file1 touch file2 touch file3
So führen Sie mehrere Befehle aus
Verwenden Sie die Option
-I
um mehrere Befehle mit
xargs
auszuführen. Es funktioniert, indem nach der Option
-I
ein
replace-str
definiert wird und alle Vorkommen der
replace-str
durch das an xargs übergebene Argument ersetzt werden.
Im folgenden
xargs
Beispiel werden zwei Befehle ausgeführt. Zunächst werden die Dateien mit
touch
und anschließend werden die Dateien mit dem Befehl
ls
aufgelistet:
echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3
Eine häufige Wahl für
replace-str
ist
%
. Sie können jedoch einen anderen Platzhalter verwenden, z. B.
ARGS
:
echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'
Festlegen eines Trennzeichens
Verwenden Sie die Option
-d
(
--delimiter
), um ein benutzerdefiniertes Trennzeichen
--delimiter
, das entweder ein einzelnes Zeichen oder eine mit
\
beginnende Escape-Sequenz sein kann.
Das folgende Beispiel verwenden wir
;
als Begrenzer:
echo "file1;file2;file3" | xargs -d ; -t touch
So lesen Sie Elemente aus einer Datei
Der Befehl xargs kann anstelle der Standardeingabe auch Elemente aus einer Datei lesen. Verwenden Sie dazu die Option
-a
(
--arg-file
) gefolgt vom Dateinamen.
Im folgenden Beispiel liest der Befehl
xargs
die Datei
ips.txt
und
ips.txt
jede IP-Adresse.
8.8.8.8 1.1.1.1
Wir verwenden auch die Option
-L 1
, mit der
xargs
angewiesen wird, jeweils eine Zeile zu lesen. Wenn diese Option weggelassen wird, leitet
xargs
alle IPs an einen einzelnen
ping
Befehl weiter.
xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms
Verwenden von
xargs
mit
find
xargs
wird am häufigsten in Kombination mit dem Befehl
find
. Mit
find
können
find
nach bestimmten Dateien suchen und anschließend mit
xargs
Vorgänge für diese Dateien ausführen.
Um Probleme mit Dateinamen zu vermeiden, die Zeilenumbrüche oder andere Sonderzeichen enthalten, verwenden Sie immer die Option find
-print0
gibt
find
den vollständigen Dateinamen gefolgt von einem Nullzeichen aus. Diese Ausgabe kann von
xargs
mit der Option
-0
, (
--null
) korrekt interpretiert werden.
Im folgenden Beispiel gibt
find
den vollständigen Namen aller Dateien im Verzeichnis
/var/www/.cache
und
xargs
/var/www/.cache
die Dateipfade an den Befehl
rm
:
find /var/www/.cache -type f -print0 | xargs -0 rm -f
Verwenden von Xargs zum Trimmen von Leerzeichen
xargs
kann auch als Werkzeug zum Entfernen von Leerzeichen von beiden Seiten einer bestimmten Zeichenfolge verwendet werden. Leiten Sie die Zeichenfolge einfach an den Befehl
xargs
, und das Zuschneiden wird ausgeführt:
echo " Long line " | xargs
Long line
Dies kann nützlich sein, wenn Sie Zeichenfolgen in Shell-Skripten vergleichen.
#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi
Strings are not equal. Strings are equal.
Fazit
xargs
ist ein Befehlszeilenprogramm unter Linux, mit dem Sie Befehle erstellen und ausführen können.
Ausführlichere Informationen zu den einzelnen
xargs
Optionen finden Sie in der xargs-Manpage.
Befehl Chgrp unter Linux (Gruppe wechseln)
In Linux ist jede Datei einem Eigentümer und einer Gruppe zugeordnet und verfügt über Berechtigungen, die festlegen, welche Benutzer die Datei lesen, schreiben oder ausführen dürfen. Der Befehl chgrpc ändert die Gruppeneigentümerschaft für bestimmte Dateien.
Diff Befehl unter Linux
diff ist ein Befehlszeilenprogramm, mit dem Sie zwei Dateien zeilenweise vergleichen können. Es kann auch den Inhalt von Verzeichnissen vergleichen.
Befehl Dmesg unter Linux
Das Befehlszeilendienstprogramm dmesg druckt und steuert den Kernel-Ringpuffer. Es ist nützlich, um Kernel-Boot-Meldungen zu untersuchen und Hardware-Probleme zu beheben.













