Hallo zusammen, ich bin Liang Xu. Sind Sie bei der Verwendung von Linux schon einmal in die Situation geraten, dass Sie einige Befehle aneinanderreihen mussten, einer der Befehle jedoch keine Pipe-Eingabe akzeptierte? In diesem Fall können wir den Befehl Unter Linux sind allen Standardanwendungen drei Datenströme zugeordnet. Dies sind der Standardeingabestrom (stdin), der Standardausgabestrom (stdout) und der Standardfehlerstrom (stderr). Diese Streams arbeiten über Text. Wir verwenden Text, um Eingaben (stdin) an den Befehl zu senden, und die Antwort (stdout) wird im Terminalfenster als Text angezeigt. Fehlermeldungen werden auch als Text im Terminalfenster (stderr) angezeigt. Eine der großartigen Funktionen von Linux und Unix-ähnlichen Betriebssystemen ist die Möglichkeit, den Standardausgabestream eines Befehls an den Standardeingabestream eines anderen Befehls weiterzuleiten. Dem ersten Befehl ist es egal, ob seine Ausgabe in das Terminalfenster geschrieben wird, und dem zweiten Befehl ist es egal, ob seine Eingabe über die Tastatur erfolgt. Obwohl alle Linux-Befehle über drei Standardstreams verfügen, akzeptieren nicht alle Befehle die Standardausgabe eines anderen Befehls als Eingabe für ihren Standardeingabestream. Daher können wir die Eingabe nicht an diese Befehle weiterleiten. Befehl „xargs“ Wenn wir die Option $ ls -1 ./*.sh Dieser Befehl listet die Shell-Skriptdateien im aktuellen Verzeichnis auf. Was passiert, wenn wir die Ausgabe an $ ls -1 ./*.sh | Wie Sie sehen, wird die Ausgabe als lange Textzeichenfolge in das Terminal geschrieben. Daraus können wir ersehen, dass Verwenden von xargs mit dem WC-Befehl Wir können den Befehl $ ls *.c | Die Ausführungsergebnisse sind wie folgt: Die Befehlsergebnisse zeigen die Statistiken für jede Datei sowie die Gesamtsumme. Dieser Befehl führt die folgenden Vorgänge aus: Verwenden von xargs mit einer Bestätigungsnachricht Wir können die Option Wenn wir dem $ echo 'eins zwei drei' | xargs -p touch Das Terminal zeigt den auszuführenden Befehl an und Wir drücken $ ls eins zwei drei Verwenden von xargs mit mehreren Befehlen Wir können Das ist etwas abstrakt, also erklären wir es anhand eines Beispiels. Verwenden wir zunächst den Befehl $ Baum -d Jetzt gibt es nur noch ein Unterverzeichnis „Images“. In der Datei directors.txt haben wir die Namen einiger Verzeichnisse, die wir erstellen möchten. Lassen Sie uns zunächst $ cat-Verzeichnisse.txt Diesen Inhalt übergeben wir als Eingabedaten an $ cat Verzeichnisse.txt | xargs -I % sh -c 'echo %; mkdir %' Dieser Befehl führt die folgenden Vorgänge aus: cat directories.txt: Übergeben Sie den Inhalt der Datei directories.txt (alle Namen der zu erstellenden Verzeichnisse) an Ergebnisse der Befehlsausführung: Mit $ Baum -d Dateien an mehrere Speicherorte kopieren Wir können den Befehl Leiten Sie zunächst die Namen der beiden Verzeichnisse an Um Wir verwenden hier auch die Option $ echo ~/dir1/ ~/dir2/ | xargs -n 1 cp -v ./*.c Wir haben die Dateien in zwei Verzeichnisse kopiert, jeweils ein Verzeichnis nach dem anderen. Löschen von Dateien in verschachtelten Verzeichnissen Wenn die Dateinamen Leerzeichen oder andere Sonderzeichen (wie etwa Zeilenumbrüche) enthalten, kann Hier nehmen wir den $ finde . -name "*.png" -type f -print0 | xargs -0 rm -v -rf "{}" Dieser Befehl führt die folgenden Aktionen aus: find . -name „*.png“: Nach Ausführung des Befehls werden alle Unterverzeichnisse durchsucht und die passenden Dateien gelöscht. Löschen verschachtelter Verzeichnisse Angenommen, wir möchten eine Reihe verschachtelter Unterverzeichnisse löschen. Verwenden Sie zunächst $ Baum -d $ finde . -name "level_one" -type d -print0 | xargs -0 rm -v -rf "{}" Dieser Befehl verwendet find, um das aktuelle Verzeichnis rekursiv nach einem Verzeichnis namens level_one zu durchsuchen und übergibt dann den Verzeichnisnamen via Der Unterschied zwischen diesem Befehl und dem vorherigen besteht darin, dass das durchsuchte Element der Name des obersten Verzeichnisses ist und Der Name jedes Verzeichnisses wird beim Entfernen ausgedruckt. Wir können den Effekt mithilfe von $ Baum -d Alle verschachtelten Unterverzeichnisse wurden gelöscht. Löschen Sie alle Dateien außer einem Dateityp Wir können Die Option $ finde . -Typ f -nicht -name "*.sh" -print0 | xargs -0 -I {} rm -v {} Nachdem der Befehl ausgeführt wurde, bestätigen wir das Ergebnis über $ ls -l Erstellen komprimierter Dateien mit Xargs Wir können den Befehl Wir suchen im aktuellen Verzeichnis nach $ finde ./ -name "*.sh" -Typ f -print0 | xargs -0 tar -cvzf script_files.tar.gz Das Ergebnis der Befehlsausführung listet alle .sh-Dateien auf und erstellt eine komprimierte Datei. Zusammenfassen Dies ist das Ende dieses Artikels zur Verwendung des Befehls xargs unter Linux. Weitere Informationen zur Verwendung des Befehls xargs unter Linux finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
>>: Detaillierte Analyse des MySQL-Datentyps DECIMAL
Lassen Sie uns zunächst darüber sprechen, warum w...
1. Einführung in die Datenintegrität 1. Einführun...
Diese eingeführten HTML-Tags entsprechen nicht un...
Standardmäßig ist die Einstellung der Breite für B...
1. Konzeptanalyse 1: UE User Experience <br /&...
Inhaltsverzeichnis 1. Primärschlüssel vorhanden 2...
In diesem Artikel wird der spezifische JavaScript...
Der Installationsprozess entfällt (ich habe es di...
Hardware-Ansichtsbefehle System # uname -a # Kern...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis $nächsterTick() $forceUpdate()...
HTML Quelltext: <a onclick="goMessage();&...
In der Entwicklungsumgebung wird das Vue-Projekt ...
So ermitteln Sie, ob eine Variable in der Shell l...
Gespeicherte Funktionen Was ist eine gespeicherte...