Beispiller Gebitt vum Kommando "xargs"

Beschreiwung an Aféierung

De Kommando xargs gëtt normalerweis an enger Kommandozeileng benotzt, wou d'Ausgaang vun engem Kommando als Argumenter vun Inputen op e anere Kommando iwwerginn ass.

A ville Fäll gëtt et kee spezielle Kommando wéi Xargs fir dat ze maachen, well déi "Pipe" an "Redirection" Operatoren déi selwecht Transaktioun maachen. Allerdéngs ass et heiansdo Froen mat der Basis Pipe- an Iwwerwaachungsmechanismus, z. B. wann Argumenter Raumplazen enthalen, datt d'xargs iwwerdréit.

Zousätzlech féiert xargs de spezifizéierte Kommando ëmmer erëm opzefëllen, wann et néideg ass, all d'Argumenter ze verwierklechen. Tatsächlech kënnt Dir spezifizéieren datt wéi vill Argumenter déi normale Inputstrooss liest ginn wann d'Xargs de spezifizéierte Kommando ausféiert.

Am Allgemengen muss d'Command xargs benotzt ginn wann d'Ausgänge vun engem Kommando als Deel vun den Optiounen oder Argumenter vun engem zweete Kommando benotzt ginn, fir deen d'Daten streamen (benotzt de Pipe Operator "|"). Regelméisseg Piping ass genuch, wann d'Donnéeën déi (Standard) Input vum zweeten Kommando sinn.

Zum Beispill, wann Dir de Kommando ls benotzt fir eng Lëscht vu Dateinamen a Verwalten ze generéieren an dës Pfeil an d'Befehl xargs auszeféieren Echofonéieren , kënnt Dir spezifizéieren wéi vill Dateinamen oder Verätsnamen ech Echo op all Iteratioun veraarbecht ginn wéi folgend :

ls | xargs -n 5 Echo

An dësem Fall kritt de Echo fënnef Fichier oder Verätsnamen ze kréien. Da echo am Ende mat engem Neo-Zeeche-Charakter gëtt, fënnef Nimm sinn op all Linn geschriwwe ginn.

Wann Dir e Kommando ausgëtt, deen e groussen oder onberechenbaren Zuel vun Elementer gëtt (zB Dateinamen), déi op e anere Kommando zur weiderer Veraarbechtung iwwerginn ginn, ass eng gutt Iddi fir déi maximal Unzuel vun Argumenter ze kontrolléieren déi de zweet Kommando iwwerléift an ofzeséchert gëtt.

Déi folgend Kommandozeilung partizipéiert de Stream vun Dateinamen, déi produzéiert goufen int int de Gruppen vun 200, ier et op de Befreiung cp komm ass, deen se an d' Backup Verzeichnis kopéiert.

fannen ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Den Element "./" am Befehl "Find" befaasst den aktuellen Verzeichnis fir d'Sich. De "-type f" Argument restriktéiert d'Sich no Dateien, an de "Numm" * .txt "-Flag féiert weider alles, wat net e" .txt "erweidert huet.Diese -i Mark bei xargs signaliséiert datt de { } Notzung stellt all Dateinumm vun der Damp.

De folgenden Kommando fannt Dateie mam Numm Core an oder ënner dem Verzeichnis / tmp a geläscht.

fannen / tmp -name core -type f -print | xargs / bin / rm -f

Fannt datt dëst falsch funktionnéiert, wann et keng Dateinumm gëtt, déi Newlines, eenzel oder duebele Quotes oder Plaazen hunn. Déi folgend Versioun verlaangt de Dateinumm esou datt déi Dateie oder Verzeichnissnamen déi eenzel oder duebele Quotes, Plazen oder Newlines enthalen, korrekt behandelt ginn.

fannen / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Anstatt de -i- Optioun kënnt Dir och de -I- Fändel benotze fir déi String festzeleeën datt dat duerch d'Input- Linn an de Kommando Argumenter ersat gëtt wéi an dësem Beispill:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

Den Ersatzstreif gëtt definéiert als "{}". Dëst heescht, datt all Optriede vum "{}" an de Kommando Argumenter duerch d'Input-Element ersat gëtt an d'Argumenter duerch d'Pipe-Operatioun ersat ginn. Dëst erlaabt Iech d'Input Elementer op spezifesch Positioune vun den Argumenter vum Kommando ze plazéieren (ëmmer erëm).