Provided by: manpages-pl_0.7-1_all bug

NAZWA

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

SKŁADNIA

       xargs  [-0prtx]  [-E  eof-str]  [-e[eof-str]]  [--eof[=eof-str]]  [--null]  [-d delimiter]
       [--delimiter  delimiter]  [-I  replace-str]  [-i[replace-str]]   [--replace[=replace-str]]
       [-l[max-lines]]     [-L     max-lines]     [--max-lines[=max-lines]]     [-n     max-args]
       [--max-args=max-args]    [-s    max-chars]    [--max-chars=max-chars]    [-P    max-procs]
       [--max-procs=max-procs]    [--interactive]    [--verbose]   [--exit]   [--no-run-if-empty]
       [--arg-file=file] [--show-limits] [--version] [--help] [polecenie [początkowe-argumenty]]

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  nowej  linii.  Następnie  wykonywane  jest  polecenie  (domyślnie
       /bin/echo)  jeden  lub  więcej  razy  z  argumentami-początkowymi,  po  których  następują
       argumenty  przeczytane  ze  standardowego wejścia. Puste linie ze standardowego wejścia są
       ignorowane.

       Ponieważ nazwy plików pod Uniksem mogą zawierać spacje i znaki nowej  linii,  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

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

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

       --delimiter=delim
       -d delim
              Elementy wejściowe są kończone podanym znakiem. Cudzysłowy i odwrotny  ukośnik  nie
              mają  specjalnego  znaczenia,  każdy  znak w wejściu jest brany literalnie. Łańcuch
              końca pliku jest traktowany jak każdy inny argument. Można użyć  tej  opcji,  jeśli
              wejście  składa  się z elementów rozdzielonych znakami nowej linii, jednakże zawsze
              lepiej jest tak zaprojektować swój program, aby można było użyć opcji  --null,  tam
              gdzie  tylko  jest to możliwe. Podany separator może być pojedynczym znakiem, kodem
              cytującym w stylu C, jak na przykład \n, albo dziesiętnym lub  szesnastkowym  kodem
              cytującym.  Kody  cytujące  dziesiętne i szesnastkowe są rozumiane tak, jak to robi
              polecenie printf. Znaki wielobajtowe nie są wspierane.

       -E eof-str
              Nadaje łańcuchowi końca pliku wartość eof-str. Jeżeli ciąg oznaczający koniec pliku
              pojawi  się  w jednej z linii 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.

       --eof[=eof-str]
       -e[eof-str]
              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 eof-str, 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.

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

       -I replace-str
              Zastępuje  wszystkie wystąpienia replace-str w początkowych-argumentach argumentami
              przeczytanym ze standardowego wejścia.  Ponadto, niecytowane odstępy  nie  separują
              argumentów,  zamiast nich separatorem jest znak nowej linii. Automatycznie włączane
              są opcje -x oraz -L 1.

       --replace[=replace-str]
       -i[replace-str]
              Opcja jest synonimem -Ireplace-str, jeśli podano replace-str, lub synonimem -I{}  w
              przeciwnym wypadku. Opcja jest przestarzała, należy zamiast niej używać -I.

       -L max-lines
              Używa  co  najwyżej  max-lines  niepustych linii danych wejściowych na każdy wiersz
              poleceń. Spacje na końcu linii powodują, że jest do niej dołączana następna  linia.
              Automatycznie włączana jest opcja -x.

       --max-lines[=max-lines]
       -l[max-lines]
              Synonim opcji -L. W przeciwieństwie do -L argument max-lines 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.

       --max-args=max-args
       -n max-args
              Używa  co najwyżej max-args argumentów na każdy wiersz poleceń. Może zostać użytych
              mniej argumentów niż max-args, 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.

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

       --no-run-if-empty
       -r     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.

       --max-chars=max-chars
       -s max-chars
              Używa co  najwyżej  max-chars  znaków  w  każdej  linii  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.

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

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

       --show-limits
              Wyświetla ograniczenia na długość linii 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).

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

       --max-procs=max-procs
       -P max-procs
              Uruchamia  co  najwyżej max-procs procesów za jednym razem; domyślną wartością jest
              1. Jeżeli max-procs jest równe 0, xargs  uruchomi  tyle  procesów,  ile  to  będzie
              możliwe  za  jednym  razem.  Opcji  -P należy używać razem z opcją -n; w przeciwnym
              razie jest możliwe, że uruchomiony zostanie tylko jeden dodatkowy proces.

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 nowej linii 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 nowej linii 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ła listę wszystkich użytkowników systemu.

       xargs sh -c 'emacs "$@" < /dev/tty' emacs

       Uruchamia minimalną liczbę kopii Emacsa, jeden  po  drugim,  potrzebną  do  edycji  plików
       wymienionych  na  standardowym wejściu programu xargs. Przykład ten robi to samo, co opcja
       -o z BSD, ale w sposób bardziej elastyczny i przenośny.

KOD ZAKOŃCZENIA

       xargs zwraca następujące kody wyjścia:
       0, gdy polecenie zakończyło się sukcesem
       123, jeżeli którekolwiek wywołanie polecenia zakończyło się z kodem wyjścia 1-125
       124, jeżeli polecenie zakończyło się z kodem wyjścia 255
       125, jeżeli polecenie zostało zakończone przez sygnał
       126, jeżeli polecenie nie mogło być uruchomione
       127, jeżeli polecenie nie zostało znalezione
       1, jeżeli wystąpił 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.

       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.

ZOBACZ TAKŻE

       find(1),  locate(1),  locatedb(5),  updatedb(1),  fork(2),  execvp(3),  Finding  Files  (w
       dokumentacji Info lub wydane w druku)

BŁĘDY

       Opcja -L nie jest kompatybilna z opcją -I, choć najprawdopodobniej powinna być.

       Nie jest możliwe używanie xargs w sposób całkowicie bezpieczny, ponieważ  zawsze  istnieje
       dziura  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 dziury 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żda przeczytana linia wejściowa jest wewnętrznie buforowana.
       Oznacza to, że istnieje górne ograniczenie długości linii 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 linie 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ść linii wejściowej,
       ponieważ  nie  używa  opcji  -i.  Drugie  wywołanie  xargs  ma  takie  ograniczenia,   ale
       zapewniliśmy,  że  nigdy  nie  wystąpi  linia dłuższa niż obsługiwana. Nie jest to idealne
       rozwiązanie. Zamiast tego opcja -i nie powinna wymuszać ograniczenia na  długość  linii  —
       dlatego  też  ten  opis pojawia się w rozdziale BŁĘDY. Problem nie występuje jeśli wejście
       pochodzi z programu find(1), ponieważ wypisuje on tylko jedną nazwę pliku w linii.

       Najlepszą   drogą   do   zgłoszenia   błędu   jest   użycie    formularza    na    stronie
       http://savannah.gnu.org/bugs/?group=findutils.  Możliwe  jest  wówczas  śledzenie  postępu
       naprawiania błędu. Pozostałe komentarze dotyczące xargs(1)  i  ogólne,  dotyczące  pakietu
       findutils, można wysyłać na listę dyskusyjną bug-findutils. Aby się na nią zapisać, proszę
       wysłać e-mail do bug-findutils-request@gnu.org.

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony  podręcznika  man  są:  Łukasz  Kowalczyk
       (PTM) <lukow@tempac.okwf.fuw.edu.pl> i Robert Luberda <robert@debian.org>.

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest  zgodne   z   wersją    4.4.2
       oryginału.

                                                                                         XARGS(1)