Provided by: manpages-pl_4.27.0-1_all bug

NAZWA

       xargs - wykonuje polecenie z argumentami pobranymi ze standardowego wejścia

SKŁADNIA

       xargs [opcje] [polecenie [argumenty-początkowe]]

OPIS

       Ta  strona  opisuje  wersję  GNU  programu  xargs.  xargs  czyta ze standardowego wejścia listę elementów
       rozdzielonych spacjami (argumenty je zawierające mogą być ujęte w pojedyncze lub podwójne cudzysłowy albo
       spacje w argumentach mogą być poprzedzone przez odwrotne ukośniki) lub znakami nowego wiersza.  Następnie
       wykonywane  jest  polecenie (domyślnie echo) jeden lub więcej razy z argumentami-początkowymi, po których
       następują argumenty przeczytane ze standardowego wejścia.  Puste  wiersze  ze  standardowego  wejścia  są
       ignorowane.

       Wiersz  poleceń dla polecenia jest budowany aż do momentu osiągnięcia systemowego limitu (chyba że podano
       opcje -n i -L). Podane polecenie może być wywołane tak wiele razy, jak to potrzebne, aby użyć całą  listę
       elementów  wejściowych. Ogólniej, wystąpi znacznie mniej wywołań polecenia niż było elementów na wejściu.
       Zwykle daje to znaczącą różnicę w wydajności. W przypadku niektórych poleceń,  przydatne  okaże  się  ich
       wykonanie równolegle; zob. opcja -P.

       Ponieważ  nazwy  plików  pod  Uniksem mogą zawierać spacje i znaki nowego wiersza, to domyślne zachowanie
       jest często problematyczne: xargs niepoprawnie przetwarza pliki  zawierające  powyższe  znaki.  W  takich
       sytuacjach  lepiej  jest używać opcji -0, co zapobiega takim problemom. Podczas używania tej opcji należy
       się upewnić, że program, który przetwarza wejście dla xargs także używa znaku null jako separatora. Jeśli
       na przykład tym programem jest GNU find, to odpowiednia opcja to -print0.

       Jeśli uruchomione polecenia zakończy się z kodem 255, to xargs natychmiast przerwie swoje  działanie  bez
       czytania  dalszego  wejścia.  Jeśli  się  to  zdarzy,  to  na standardowym wyjściu błędów wypisywany jest
       komunikat błędu.

OPCJE

       -0, --null
              Nazwy plików wejściowych są zakończone znakiem  null  zamiast  spacją,  a  cudzysłowy  i  odwrotne
              ukośniki  nie mają specjalnego znaczenia (wszystkie znaki są brane dosłownie). Łańcuch końca pliku
              jest traktowany jak każdy inny.  Opcja jest użyteczna, gdy argumenty mogą  zawierać  białe  znaki,
              cudzysłowy,  apostrofy  lub  odwrotne  ukośniki. Ta opcja może być użyta do pobrania argumentów od
              programu GNU find uruchomionego z opcją -print0.

       -a plik, --arg-file=plik
              Czyta elementy z podanego pliku zamiast ze standardowego wejścia. Jeśli ta opcja jest używana,  to
              standardowe  wejście  nie  jest  zmieniane  podczas  uruchamiania  poleceń.  W  przeciwnym wypadku
              standardowe wejście jest przekierowywane z /dev/null.

       --delimiter=ogranicznik, -d ogranicznik
              Elementy wejściowe są zakończone podanym znakiem. Podany ogranicznik może być pojedynczym znakiem,
              cytowanym znakiem w stylu C, takim jak  \n,  albo  ósemkowym  lub  szesnastkowym  kodem  ucieczki.
              Ósemkowe i szesnastkowe kody ucieczki są interpretowane tak, jak w przypadku polecenia printf. Nie
              są obsługiwane znaki wielobajtowe. Przy przetwarzaniu wejścia, znaki cytatu i odwrotny ukośnik nie
              są  znakami  specjalnymi; każdy znak wejścia jest przyjmowany dosłownie. Opcja -d wyłącza wszelkie
              łańcuchy końca pliku, które są traktowane jak każdy inny  argument.  Można  użyć  tej  opcji,  gdy
              wejście  składa  się  z  elementów  oddzielonych znakiem nowego wiersza, aczkolwiek niemal zawsze,
              lepiej jest zaprojektować swój program, aby używał --null tam, gdzie to możliwe.

       -E łańcuch-końca-pliku
              Nadaje łańcuchowi końca pliku wartość łańcuch-końca-pliku. Jeżeli ciąg  oznaczający  koniec  pliku
              pojawi  się  w  jednym z wierszy wejściowych, reszta danych jest ignorowana. Jeśli nie użyto opcji
              -E, ani -e, to łańcuch końca pliku nie jest używany.

       -e[łańcuch-końca-pliku], --eof[=łańcuch-końca-pliku]
              Opcja jest synonimem opcji -E. Należy zamiast  niej  używać  opcji  -E,  ponieważ  jest  zgodna  z
              POSIX-em,  podczas  gdy ta opcja — nie jest. Jeśli pominięto łańcuch-końca-pliku, to łańcuch końca
              pliku nie jest używany. Jeśli nie podano ani opcji -E, ani opcji -e, to łańcuch  końca  pliku  nie
              jest używany.

       -I łańcuch-do-zastąpienia
              Zastępuje  wszystkie  wystąpienia  łańcucha-do-zastąpienia  w początkowych-argumentach argumentami
              przeczytanym ze standardowego wejścia.  Ponadto,  niecytowane  odstępy  nie  separują  argumentów,
              zamiast nich separatorem jest znak nowego wiersza. Automatycznie włączane są opcje -x oraz -L 1.

       -i[łańcuch-do-zastąpienia], --replace[=łańcuch-do-zastąpienia]
              Opcja  jest  synonimem  -I łańcuch-do-zastąpienia, jeśli podano łańcuch-do-zastąpienia. Jeśli brak
              argumentu łańcuch-do-zastąpienia, to działa to  jak  -I{}.  Opcja  -i  jest  przestarzała,  należy
              zamiast niej używać -I.

       -L maksymalna-liczba-wierszy
              Używa co najwyżej maksymalnej-liczby-wierszy niepustych wierszy danych wejściowych na każdy wiersz
              poleceń.  Spacje  na  końcu  wiersza  powodują,  że  jest  do  niego  dołączany  następny  wiersz.
              Automatycznie włączana jest opcja -x.

       -l[maksymalna-liczba-wierszy], --max-lines[=maksymalna-liczba-wierszy]
              Synonim opcji -L. W przeciwieństwie do  -L  argument  maksymalna-liczba-wierszy  jest  opcjonalny;
              jeśli  nie  jest podany to jego wartością domyślną jest jeden. Opcja -l jest przestarzała ponieważ
              standard POSIX wymienia -L zamiast niej.

       -n maksymalna-liczba-argumentów, --max-args=maksymalna-liczba-argumentów
              Używa co najwyżej maksymalnej-liczby-argumentów na każdy wiersz poleceń. Może zostać użytych mniej
              argumentów niż maksymalna-liczba-argumentów, jeśli zostanie przekroczony ich rozmiar (patrz  opcja
              -s),  chyba  że  podana  jest  opcja  -x,  w którym to przypadku działanie programu xargs zostanie
              zakończone.

       -P maksymalna-liczba-procesów, --max-procs=maksymalna-liczba-procesów
              Uruchamia     do     maksymalnej-liczby-procesów     jednocześnie;     domyślnie     1.      Jeśli
              maksymalna-liczba-procesów  wynosi  0,  to  xargs uruchomi tak wiele procesów jednocześnie, jak to
              możliwe. Należy korzystać z opcji -n lub z opcji -L  razem  z  -P;  w  innym  przypadku  może  się
              zdarzyć, że będzie uruchomione tylko pojedyncze wykonanie. W trakcie działania xargs, można wysłać
              jego  procesowi  sygnał  SIGUSR1  aby  zwiększyć  liczbę równoległych poleceń do uruchomienia, lub
              SIGUSR2 — aby ją zmniejszyć. Nie można zwiększyć liczby ponad  wynikający  z  implementacji  limit
              (ukazany  za  pomocą  opcji --show-limits). Liczby nie można zmniejszyć poniżej 1. xargs nigdy nie
              przerywa swoich poleceń, przy żądaniu zmniejszenia liczby równoległych procesów,  program  jedynie
              poczeka, aż więcej niż jedno dotychczasowe polecenie się zakończy, zanim rozpocznie kolejne. xargs
              zawsze  zaczeka  na  zakończenie  wszystkich procesów potomnych, zanim sam się zakończy (lecz zob.
              USTERKI).

              Jeśli nie korzysta się z opcji -P, to xargs nie obsłuży sygnałów SIGUSR1 i SIGUSR2 co oznacza,  że
              zakończą  one  program  (chyba  że zostały zablokowane w procesie macierzystym przed uruchomieniem
              xargs).

              Proszę zauważyć, że to do procesów wywołujących należy poprawne zarządzanie  równoległym  dostępem
              do  zasobów dzielonych. Przykładowo, jeśli więcej niż jeden z nich spróbuje wypisać na standardowe
              wyjście,  wyjście  zostanie  utworzone  w  nieokreślonej  (i   najprawdopodobniej   przemieszanej)
              kolejności,  chyba  że  procesy  w jakiś sposób współpracują ze sobą, aby temu zapobiec. Jednym ze
              sposobów uniknięcia takich problemów jest korzystanie z  jakiegoś  typu  blokad.  Mówiąc  ogólnie,
              blokady  zapewnią  poprawną  kolejność  wyjścia,  kosztem  wydajności.  Jeśli  koszt  zmniejszenia
              wydajności jest nieakceptowalny, należy doprowadzić do tego, aby każdy proces tworzył  wyjście  do
              oddzielnego pliku (lub innego typu oddzielnego zasobu).

       -o, --open-tty
              Otwiera  ponownie  standardowe  wejście  jako  /dev/tty  w  procesie  potomnym,  przed  wykonaniem
              polecenia. Przydaje się to, gdy xargs ma uruchomić aplikację interaktywną.

       -p, --interactive
              Prosi użytkownika o potwierdzenie przed uruchomieniem  każdego  wiersza  poleceń  i  przeczytaniem
              danych  z  terminala.  Uruchamia  wiersz poleceń tylko wtedy, gdy odpowiedź zaczyna się od „y” lub
              „Y”. Automatycznie włącza opcję -t.

       --process-slot-var=nazwa
              Ustawia zmienną środowiskową nazwa na unikalną wartość dla każdego procesu potomnego. Wartości  są
              używane  ponownie, po zakończeniu potomków. Może to posłużyć np. jako prymitywny sposób rozłożenia
              obciążenia.

       -r, --no-run-if-empty
              Jeżeli w danych ze standardowego wejścia nie znajdują się znaki inne  niż  spacje,  polecenie  nie
              jest  uruchamiane.  Normalnie  polecenie  jest  uruchamiane  jednorazowo,  nawet gdy nie odczytano
              żadnych danych. Ta opcja jest rozszerzeniem GNU.

       -s maksymalna-liczba-znaków, --max-chars=maksymalna-liczba-znaków
              Używa co najwyżej maksymalnej-liczby-znaków w każdym wierszu poleceń, włączając  w  to  polecenie,
              argumenty  początkowe  oraz  znaki  null kończące każdy z łańcuchów argumentów. Największa możliwa
              wartość zależy od systemu i jest  wyliczana  jako  limit  długości  argumentów  wywołania  exec(2)
              pomniejszony  o  rozmiar  środowiska,  następnie pomniejszony o 2048 bajtów. Jeśli wartość ta jest
              większa niż 128 KiB, to 128 KiB jest używane jako wartość domyślna, w przeciwnym wypadku wartością
              domyślną jest wyliczona wartość maksymalna. 1 KiB (kibibajt) to 1024  bajty.  xargs  automatycznie
              dostosowuje się do silniejszych ograniczeń.

       --show-limits
              Wyświetla  ograniczenia  na długość wiersza poleceń, które są ustanawiane przez system operacyjny,
              przez xargs w przypadku rozmiaru wewnętrznego bufora lub przez opcję -s. Aby xargs nie zrobił  nic
              poza  wyświetleniem  ograniczeń,  jego  wejście  powinno być przekierowane z /dev/null (i być może
              powinna być podana opcja --no-run-if-empty).

       -t, --verbose
              Wiersz poleceń jest wypisywany na standardowe wyjście błędów przed wykonaniem polecenia.

       -x, --exit
              Kończy działanie programu, jeżeli rozmiar zostanie przekroczony (patrz opcja -s).

       --     Rozdziela listę opcji. Następne argumenty, jeśli wystąpią, są  traktowane  tylko  jako  argumenty,
              nawet  jeśli  rozpoczynają  się  od  -.  Na  przykład  xargs  --  --help uruchomi polecenie --help
              (zlokalizowane w PATH), zamiast wypisać komunikatu pomocy, a xargs  --  --moje-polecenie  uruchomi
              polecenie --moje-polecenie, zamiast odrzucić go jako nierozpoznaną opcję.

       --help Podaje wszystkie opcje programu xargs i kończy działanie.

       --version
              Wypisuje numer wersji xargs i kończy działanie programu.

       Opcje --max-lines (-L, -l), --replace (-I, -i) i --max-args (-n) wzajemnie się wykluczają. Jeśli poda się
       niektóre  z  nich w tym samym czasie, xargs zwykle użyje opcji podanej w wierszu polecenia jako ostatniej
       tj. zresetuje ona wartość sprzecznej opcji (podanej wcześniej) na jej wartość domyślną.  Dodatkowo  xargs
       wypisze    ostrzeżenie    na    stderr.    Wyjątkiem    od    tej    reguły    jest   specjalna   wartość
       maksymalnej-liczby-argumentów równa 1 („-n1”); jest ona ignorowana po opcji --replace i jej  aliasach  -I
       oraz -i, ponieważ nie prowadzi to do faktycznego konfliktu.

PRZYKŁADY

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

       Wyszukuje a następnie usuwa pliki o nazwie core w katalogu /tmp i jego podkatalogach. Proszę zauważyć, że
       będzie to działać niepoprawnie jeśli którakolwiek z nazw plików zawiera znaki nowego wiersza lub spacji.

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

       Wyszukuje  a  następnie  usuwa  pliki o nazwie core w katalogu /tmp i jego podkatalogach. Nazwy plików są
       przetwarzane w taki sposób, że nazwy plików lub katalogów zawierające znaki spacji lub nowego wiersza  są
       poprawnie obsługiwane.

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

       Wyszukuje  a  następnie  usuwa pliki o nazwie core w katalogu /tmp i jego podkatalogach. Robi to jednak w
       sposób bardziej efektywny niż w poprzednim przykładzie  (ponieważ  nie  używa  fork(2)  i  exec(2),  żeby
       uruchomić rm i nie potrzebuje dodatkowego procesu xargs).

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

       Tworzy zwięzłą listę wszystkich użytkowników systemu.

STATUS ZAKOŃCZENIA

       xargs zwraca następujące statusy zakończenia:

              0      jeśli się powiedzie

              123    jeśli dowolne z wywołanych poleceń zakończy się ze statusem 1–125

              124    jeśli polecenie zakończyło się ze statusem 255

              125    lub polecenie zostało zabite sygnałem

              126    jeśli polecenie nie może być uruchomione

              127    jeśli nie znaleziono polecenia

              1      jeśli wystąpił jakiś inny błąd.

       Kody  zakończenia  większe  od  128 są używane przez powłokę do wskazania, że program został zabity przez
       sygnał.

ZGODNOŚĆ ZE STANDARDAMI

       Według stanu na wersję 4.2.9 programu GNU xargs, domyślnie xargs nie  używa  logicznego  znacznika  końca
       pliku. Standard POSIX (IEEE Std 1003.1, edycja 2004) na to pozwala.

       Opcje  -l  i  -i  pojawiają  się w wersji standardu POSIX z roku 1997, ale brak ich w wersji z roku 2004.
       Dlatego powinno się używać zamiast nich opcji - odpowiednio - -L i -I.

       Opcja -o jest rozszerzeniem standardu POSIX, mającą na celu lepszą kompatybilność z BSD.

       Standard POSIX pozwala implementacjom na stosowanie limitu rozmiaru argumentów funkcji  exec.  Limit  ten
       może  wynosić tylko 4096 bajtów, włączając w to rozmiar środowiska. Przenośne skrypty nie mogą polegać na
       tym, że większa  wartość  jest  obsługiwana.  Jednakże  nie  znamy  żadnej  implementacji,  w  której  to
       ograniczenie  jest  tak  małe.  Można  użyć  opcja  --show-limits,  aby  wyświetlić  ograniczenia  mające
       zastosowanie do bieżącego systemu.

       W wersjach xargs do wersji 4.9.0 włącznie, SIGUSR1 i SIGUSR2 nie spowodują zakończenia xargs  nawet,  gdy
       nie korzysta się z opcji -P.

HISTORIA

       Polecenie  xargs  zostało  wymyślone  przez  Herba  Gellisa  w Bell Labs. Więcej informacji w podręczniku
       Texinfo findutils, w rozdziale Finding Files.

USTERKI

       Nie jest możliwe używanie xargs w sposób całkowicie bezpieczny, ponieważ  zawsze  istnieje  luka  czasowa
       pomiędzy  utworzeniem listy plików wejściowych i użyciem tej listy przez polecenia, które xargs wykonuje.
       Jeśli inni użytkownicy mają dostęp do systemu, to mogą zmienić  stan  systemu  plików  podczas  tej  luki
       czasowej,  tak  żeby wymusić na poleceniach uruchomianych przez xargs wykonywanie akcji na plikach, które
       nie były zamierzone. Bardziej szczegółową dyskusję dotyczącą tego i podobnych problemów można  znaleźć  w
       rozdziale „Security Considerations” dokumentacji texinfo pakietu findutils. Opcja -execdir polecenia find
       często może stanowić bardziej bezpieczną alternatywę.

       Podczas  używania opcji -I każdy przeczytany wiersz wejściowy jest wewnętrznie buforowany. Oznacza to, że
       istnieje górne ograniczenie długości wierszy wejściowych akceptowanych przez xargs z opcją -I. Aby ominąć
       to ograniczenie można użyć opcji -s do zwiększenia rozmiaru bufora używanego przez xargs oraz można także
       użyć dodatkowego wywołania xargs, by zapewnić, że bardzo długie wiersze się nie pojawią. Na przykład:

       jakieśpolecenie | xargs -s 50000 echo | xargs -I '{}' -s 100000 rm '{}'

       Powyższe pierwsze wywołanie xargs nie ma ograniczenia na długość wiersza wejściowego, ponieważ nie  używa
       opcji  -i.  Drugie  wywołanie  xargs ma takie ograniczenia, ale zapewniliśmy, że nigdy nie wystąpi wiersz
       dłuższy niż obsługiwany. Nie jest to idealne rozwiązanie. Zamiast tego  opcja  -i  nie  powinna  wymuszać
       ograniczenia  na  długość  wiersza  —  dlatego  też ten opis pojawia się w rozdziale USTERKI. Problem nie
       występuje jeśli wejście pochodzi z programu find(1), ponieważ wypisuje  on  tylko  jedną  nazwę  pliku  w
       wierszu.

       W  wersjach xargs do wersji 4.9.0 włącznie, xargs -P zakończyłoby działanie, w chwili gdy niektóre z jego
       potomków wciąż by działały, jeśli jeden z nich zakończył się ze statusem 255.

ZGŁASZANIE BŁĘDÓW

       Strona internetowa z pomocą GNU findutils: <https://www.gnu.org/software/findutils/#get-help>
       O błędach tłumaczenia programu prosimy poinformować przez <https://translationproject.org/team/pl.html>

       Wszelkie inne problemy prosimy zgłaszać za pomocą systemu śledzenia błędów GNU Savannah:
              <https://savannah.gnu.org/bugs/?group=findutils>
       Do ogólnej dyskusji na tematy związane z pakietem GNU findutils służy lista dyskusyjna bug-findutils:
              <https://lists.gnu.org/mailman/listinfo/bug-findutils>

PRAWA AUTORSKIE

       Copyright © 1990–2024 Free Software Foundation, Inc. Licencja GPLv3+: GNU GPL w wersji 3 lub  późniejszej
       <https://gnu.org/licenses/gpl.html>.
       Jest  to  wolne oprogramowanie: można je zmieniać i rozpowszechniać. Nie ma ŻADNEJ GWARANCJI, w granicach
       określonych przez prawo.

ZOBACZ TAKŻE

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

       Pełna dokumentacja: <https://www.gnu.org/software/findutils/xargs>
       albo dostępna lokalnie przez: info xargs

TŁUMACZENIE

       Tłumaczenie  niniejszej  strony  podręcznika:  Łukasz  Kowalczyk  <lukow@tempac.okwf.fuw.edu.pl>,  Robert
       Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3  lub  nowszej.   Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej manpages-pl-
       list@lists.sourceforge.net.

                                                                                                        XARGS(1)