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)