xargs(1): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '= xargs(1) = == NAMN == xargs - bygg och exekvera kommandorader från standard in == SYNOPSIS == <pre> xargs [flaggor] [kommando [initial-argument]] </pre> == BESKRIVNING == Denna manualsida dokumenterar GNU-versionen av '''xargs'''. '''xargs''' läser objekt från standard in, avgränsade av blanksteg (som kan skyddas med dubbla eller enkla citattecken eller ett omvänt snedstreck) eller radbrytningar, och exekverar '''kommando''' (standard är '''echo''') en eller...')
(Ingen skillnad)

Versionen från 29 augusti 2025 kl. 17.50

xargs(1)

NAMN

xargs - bygg och exekvera kommandorader från standard in

SYNOPSIS

xargs [flaggor] [kommando [initial-argument]]

BESKRIVNING

Denna manualsida dokumenterar GNU-versionen av xargs. xargs läser objekt från standard in, avgränsade av blanksteg (som kan skyddas med dubbla eller enkla citattecken eller ett omvänt snedstreck) eller radbrytningar, och exekverar kommando (standard är echo) en eller flera gånger med eventuella initial-argument följt av objekt lästa från standard in. Tomma rader på standard in ignoreras.

Kommandoraden för kommando byggs upp tills den når en systemdefinierad gräns (om inte flaggorna -n och -L används). Det angivna kommando kommer att anropas så många gånger som behövs för att använda upp listan av indataobjekt. I allmänhet kommer det att bli mycket färre anrop av kommando än antalet objekt i indata. Detta ger ofta betydande prestandafördelar. Vissa kommandon kan också köras parallellt; se flaggan -P.

Eftersom Unix-filnamn kan innehålla blanksteg och radbrytningar är detta standardbeteende ofta problematiskt. Filnamn som innehåller blanksteg och/eller radbrytningar behandlas felaktigt av xargs. I dessa situationer är det bättre att använda flaggan -0, som förhindrar sådana problem. När denna flagga används måste det program som producerar indata för xargs också använda en nollteckenavgränsare. Om programmet är GNU find används flaggan -print0 för detta ändamål.

Om någon körning av kommandot avslutas med statuskod 255 stoppar xargs omedelbart utan att läsa ytterligare indata. Ett felmeddelande skrivs ut på stderr när detta händer.

FLAGGOR

Flagga Beskrivning
-0, --null Indataobjekt avslutas med ett nolltecken istället för blanksteg. Citat och omvänt snedstreck är inte speciella (varje tecken tas bokstavligen). Inaktiverar end-of-file-strängen. Användbart när indataobjekt kan innehålla blanksteg, citattecken eller omvänt snedstreck. GNU find och (från Issue 8, POSIX) -print0 producerar sådan indata.
'-a file, --arg-file=file Läs indataobjekt från file istället för standard in. Om du använder denna flagga förblir stdin oförändrad när kommandon körs, annars omdirigeras stdin från /dev/null.
--delimiter=delim, -d delim Indataobjekt avslutas av den angivna avgränsaren. Avgränsaren kan vara ett enda tecken, en C-stils escape (t.ex. \n), eller en oktal/hexadecimal escape-kod. Multibyte-tecken stöds inte. Inaktiverar end-of-file-strängen. Bättre att använda --null om möjligt.
-E eof-str Sätt end-of-file-strängen till eof-str. Om den förekommer som en rad ignoreras resten av indatan. Standard: ingen end-of-file-sträng.
-e[eof-str], --eof[=eof-str] Synonym för -E. Om eof-str utelämnas används ingen end-of-file-sträng. Flaggan är inte POSIX-kompatibel.
-I replace-str Ersätt förekomster av replace-str i initial-argumenten med objekt från standard in. Separatortecken är radbrytning istället för blanksteg. Implicerar -x och -L 1.
-i[replace-str], --replace[=replace-str] Synonym för -I. Om replace-str utelämnas används {}. Flaggan är föråldrad; använd -I istället.
-L max-lines Använd högst max-lines icke-tomma rader per kommando. Efterföljande blanksteg logiskt fortsätter raden. Implicerar -x.
-l[max-lines], --max-lines[=max-lines] Synonym för -L. max-lines är valfritt. Standard = 1. Flaggan är föråldrad (POSIX föreskriver -L istället).
-n max-args, --max-args=max-args Använd högst max-args argument per kommando. Färre används om storleken (se -s) överskrids, om inte -x används (då avbryts xargs).
-P max-procs, --max-procs=max-procs Kör upp till max-procs processer samtidigt. Standard = 1. 0 = så många som möjligt. Möjlighet att ändra antal via signaler SIGUSR1/SIGUSR2. Notera: utdata kan blandas utan låsning.
-o, --open-tty Öppna stdin som /dev/tty i barnprocessen innan kommandot körs. Användbart för interaktiva program.
-p, --interactive Fråga användaren innan varje kommando körs. Kör bara om svaret börjar med y/Y. Implicerar -t.
--process-slot-var=name Sätt miljövariabeln name till ett unikt värde i varje barnprocess.
-r, --no-run-if-empty Kör inte kommandot om indata är tom. Standard: körs ändå en gång.
-s max-chars, --max-chars=max-chars Använd högst max-chars tecken per kommando, inklusive kommandot och nolltecken. Systemberoende gränser gäller.
--show-limits Visa gränser för kommandoradens längd. Använd /dev/null som indata för att bara visa.
-t, --verbose Skriv ut kommandoraden innan exekvering.
-x, --exit Avbryt om storleken överskrider (se -s).
-- Markerar slutet på flaggorna. Efterföljande argument behandlas som operander även om de börjar med -.
--help Visa hjälpsammanfattning.
--version Visa versionsnummer.

Obs: --max-lines (-L, -l), --replace (-I, -i) och --max-args (-n) är ömsesidigt uteslutande. Den senast angivna gäller, undantaget att -n 1 ignoreras efter --replace.

EXEMPEL

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

Hittar och tar bort filer som heter core i eller under /tmp. Felaktigt vid filnamn med blanksteg eller radbrytningar.

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

Samma som ovan, men hanterar filnamn med blanksteg eller radbrytningar korrekt.

find /tmp -depth -name core -type f -delete

Mer effektiv metod, utan behov av fork(2)/exec(2).

cut -d: -f1 < /etc/passwd | sort | xargs echo

Genererar en kompakt lista över alla användare på systemet.

AVSLUTNINGSSTATUS

xargs avslutas med följande statuskoder:

  • 0 – vid framgång
  • 123 – om något kommando avslutade med status 1–125
  • 124 – om kommandot avslutade med status 255
  • 125 – om kommandot dödades av signal
  • 126 – om kommandot inte kan köras
  • 127 – om kommandot inte hittades
  • 1 – om något annat fel inträffade

Statuskoder >128 används av skalet för att indikera död p.g.a. signal.

STANDARDER

  • -0 inkluderas i POSIX Issue 8.
  • -l och -i fanns i POSIX 1997 men inte i 2004. Använd -L och -I.
  • -o är en BSD-kompatibilitetsutvidgning.
  • --show-limits kan användas för att se aktuella gränser.

HISTORIK

Programmet xargs uppfanns av Herb Gellis på Bell Labs.

BUGGAR

  • Det är omöjligt att använda xargs helt säkert eftersom det finns ett tidsglapp mellan filuppräkning och användning. Andra användare kan manipulera filsystemet under detta intervall.
  • Användning av -I innebär en övre gräns på radlängden. Kan delvis kringgås med -s och extra xargs-anrop.
  • Fram till och med version 4.9.0 kunde xargs -P avsluta medan barnprocesser fortfarande körde, om någon avslutade med status 255.

FELRAPPORTERING

COPYRIGHT

Copyright © 1990–2025 Free Software Foundation, Inc. Licens GPLv3+: GNU GPL version 3 eller senare <https://gnu.org/licenses/gpl.html>. Fri programvara: du får ändra och distribuera. Ingen garanti.

SE ÄVEN

find(1), kill(1), locate(1), updatedb(1), fork(2), execvp(3), locatedb(5), signal(7)

Fullständig dokumentation: <https://www.gnu.org/software/findutils/xargs> eller lokalt via: info xargs

COLOPHON

Denna sida är en del av projektet findutils. Projektinformation: <http://www.gnu.org/software/findutils/> Buggrapporter: <https://savannah.gnu.org/bugs/?group=findutils> Denna sida hämtades från projektets Git-repo den 2 februari 2025.