Overzicht
xargs leest gegevens van standaardinvoer, interpreteert deze als argumenten gescheiden door spaties of nieuwe regels, en voert vervolgens het opgegeven commando uit met deze argumenten. Het is bijzonder krachtig wanneer het wordt gebruikt in combinatie met het find-commando om batchbewerkingen op bestandslijsten uit te voeren.
Belangrijkste functies
- Converteert standaardinvoergegevens naar commando-argumenten
- Beperkt het aantal argumenten bij het uitvoeren van commando's
- Ondersteunt parallelle verwerking
- Verwerkt bestandsnamen met speciale tekens veilig
Belangrijkste opties
De belangrijkste opties van het xargs-commando worden gebruikt om de manier waarop invoer wordt verwerkt, de controle over de uitvoering van commando's en de uitvoerindeling in te stellen.
Invoer verwerking
Uitvoeringscontrole
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`xargs` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
xargs kan flexibel worden gebruikt in verschillende scenario's. Hier zijn enkele veelvoorkomende gebruiksvoorbeelden.
Basisgebruik: Meerdere bestanden verwijderen
echo "file1.txt file2.txt" | xargs rm
Verwijder bestandsnamen die via standaardinvoer worden ontvangen door ze door te geven als argumenten aan het rm-commando.
Veilig bestanden verwijderen met find
find . -name "*.bak" -print0 | xargs -0 rm
Verwijder bestanden veilig, zelfs als bestandsnamen spaties of speciale tekens bevatten, door find -print0 en xargs -0 te gebruiken.
Commando uitvoeren voor elk bestand (vervangende tekenreeks)
find . -name "*.log" | xargs -I {} mv {} {}.old
Wijzig de extensie van elk gevonden .log-bestand naar .old door het mv-commando uit te voeren met de vervangende tekenreeks.
Parallel SSH-verbindingen maken met meerdere hosts
cat hostnames.txt | xargs -P 5 -I {} ssh {} "uptime"
Probeer tegelijkertijd 5 SSH-verbindingen te maken met elke host in het bestand hostnames.txt om de uptime te controleren.
Bevestigingsprompt voor uitvoering
ls *.tmp | xargs -p rm
Vraag om bevestiging voor het verwijderen van elk .tmp-bestand in de huidige map voordat de verwijdering wordt uitgevoerd.
Tips & Aandachtspunten
Tips en aandachtspunten voor het effectief gebruiken van xargs.
Veilige verwerking van bestandsnamen
Omdat bestandsnamen spaties, tabs, nieuwe regels en aanhalingstekens kunnen bevatten, moet u altijd de combinatie `find ... -print0 | xargs -0 ...` gebruiken bij het werken met het find-commando. Dit voorkomt problemen door items te scheiden met null-karakters.
- Gebruik altijd `find -print0` samen met `xargs -0`
- Standaard worden items gescheiden door spaties, wat problemen kan veroorzaken als bestandsnamen spaties bevatten
Voorzichtigheid bij het uitvoeren van risicovolle commando's
Wees zeer voorzichtig bij het gebruik van xargs met commando's die systeemwijzigingen aanbrengen, zoals rm, mv, chown. Het is raadzaam om de `-p` optie te gebruiken om elke uitvoering te bevestigen, of de `-t` optie om de uit te voeren commando's vooraf te bekijken.
- Gebruik de `-p` (prompt) optie voor bevestiging voor uitvoering
- Gebruik de `-t` (trace) optie om de uit te voeren commando's te bekijken
- Test eerst met `echo` om te controleren of het naar verwachting werkt
xargs versus for-lus
Voor eenvoudige taken kan een for-lus in de shell intuïtiever zijn, maar voor een zeer groot aantal bestanden/items om te verwerken, wanneer parallelle verwerking nodig is, of wanneer de limiet van de opdrachtregel wordt overschreden, is xargs een efficiënter en krachtiger alternatief.
- Verwerking van grote hoeveelheden bestanden: `xargs` is geheugenefficiënter
- Parallelle verwerking: `xargs -P`
- Limiet van de opdrachtregel: `xargs` verdeelt automatisch