Provided by: manpages-pl_4.23.1-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 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.

              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).

       --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.

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.

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-2022 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

       Autorami    polskiego    tłumaczenia    niniejszej    strony    podręcznika    są:    Ł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)