File: xargs.1

package info (click to toggle)
manpages-pl 1%3A0.6-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 20,896 kB
  • ctags: 7
  • sloc: sh: 112; makefile: 59; perl: 32
file content (350 lines) | stat: -rw-r--r-- 15,544 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
.\" -*- nroff -*-
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\" This file is distributed under the same license as original manpage
.\" Copyright of the original manpage:
.\" Copyright © 1990-94,2000,2003-10 Free Software Foundation, Inc. (GPL-3+)
.\" Copyright © of Polish translation:
.\" Łukasz Kowalczyk (PTM) <lukow@tempac.okwf.fuw.edu.pl>, 1998.
.\" Robert Luberda <robert@debian.org>, 2014.
.TH XARGS 1   
.SH NAZWA
xargs \- wykonaj polecenie z argumentami pobranymi ze standardowego wejścia
.SH SKŁADNIA
\fBxargs\fP
.nh
[\fB\-0prtx\fP] [\fB\-E \fP\fIeof\-str\fP] [\fB\-e\fP[\fIeof\-str\fP]] [\fB\-\-eof\fP[=\fIeof\-str\fP]]
[\fB\-\-null\fP] [\fB\-d \fP\fIdelimiter\fP] [\fB\-\-delimiter \fP\fIdelimiter\fP] [\fB\-I
\fP\fIreplace\-str\fP] [\fB\-i\fP[\fIreplace\-str\fP]] [\fB\-\-replace\fP[=\fIreplace\-str\fP]]
[\fB\-l\fP[\fImax\-lines\fP]] [\fB\-L \fP\fImax\-lines\fP] [\fB\-\-max\-lines\fP[=\fImax\-lines\fP]]
[\fB\-n \fP\fImax\-args\fP] [\fB\-\-max\-args\fP=\fImax\-args\fP] [\fB\-s \fP\fImax\-chars\fP]
[\fB\-\-max\-chars\fP=\fImax\-chars\fP] [\fB\-P \fP\fImax\-procs\fP]
[\fB\-\-max\-procs\fP=\fImax\-procs\fP] [\fB\-\-interactive\fP] [\fB\-\-verbose\fP] [\fB\-\-exit\fP]
[\fB\-\-no\-run\-if\-empty\fP] [\fB\-\-arg\-file\fP=\fIfile\fP] [\fB\-\-show\-limits\fP]
[\fB\-\-version\fP] [\fB\-\-help\fP] [\fIpolecenie\fP [\fIpoczątkowe\-argumenty\fP]]
.hy
.SH OPIS
Ta strona opisuje wersję GNU programu \fBxargs\fP. \fBxargs\fP 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 \fIpolecenie\fP (domyślnie \fI/bin/echo\fP)
jeden lub więcej razy z \fIargumentami\-początkowymi\fP, po których następują
argumenty przeczytane ze standardowego wejścia. Puste linie ze standardowego
wejścia są ignorowane.
.P
Ponieważ nazwy plików pod Uniksem mogą zawierać spacje i znaki nowej linii,
to domyślne zachowanie jest często problematyczne: \fBxargs\fP niepoprawnie
przetwarza pliki zawierające powyższe znaki. W takich sytuacjach lepiej jest
używać opcji \fB\-0\fP, co zapobiega takim problemom. Podczas używania tej opcji
należy się upewnić, że program, który przetwarza wejście dla \fBxargs\fP także
używa znaku null jako separatora. Jeśli na przykład tym programem jest GNU
\fBfind\fP, to odpowiednia opcja to \fB\-print0\fP.
.P
Jeśli uruchomione polecenia zakończy się z kodem 255, to \fBxargs\fP
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.
.SH OPCJE
.TP 
.PD 0
\fB\-\-arg\-file=\fP\fIfile\fP
.TP 
.PD 0
\fB\-a \fP\fIfile\fP
Czyta elementy z podanego pliku \fIfile\fP 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 \fI/dev/null\fP.

.TP 
.PD 0
\fB\-\-null\fP
.TP 
.PD
\fB\-0\fP
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 \fBfind\fP uruchomionego z opcją
\fB\-print0\fP.

.TP 
.PD 0
\fB\-\-delimiter=\fP\fIdelim\fP
.TP 
.PD 
\fB\-d\fP\fI delim\fP
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 \fB\-\-null\fP, tam gdzie
tylko jest to możliwe. Podany separator może być pojedynczym znakiem, kodem
cytującym w stylu C, jak na przykład \fB\en\fP, albo dziesiętnym lub
szesnastkowym kodem cytującym. Kody cytujące dziesiętne i szesnastkowe są
rozumiane tak, jak to robi polecenie \fBprintf\fP. Znaki wielobajtowe nie są
wspierane.

.TP 
\fB\-E\fP\fI eof\-str\fP
Nadaje łańcuchowi końca pliku wartość \fIeof\-str\fP. 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 \fB\-E\fP, ani \fB\-e\fP, to łańcuch końca pliku
nie jest używany.
.TP  
.PD 0
\fB\-\-eof\fP[\fI=eof\-str\fP]
.TP  
.PD
\fB\-e\fP[\fIeof\-str\fP]
Opcja jest synonimem opcji \fB\-E\fP. Należy zamiast niej używać opcji \fB\-E\fP,
ponieważ jest zgodna z POSIX\-em, podczas gdy ta opcja \(em nie jest. Jeśli
pominięto \fIeof\-str\fP, to łańcuch końca pliku nie jest używany. Jeśli nie
podano ani opcji \fB\-E\fP, ani opcji \fB\-e\fP, to łańcuch końca pliku nie jest
używany.
.TP 
\fB\-\-help\fP
Podaje wszystkie opcje programu \fBxargs\fP i kończy działanie.
.TP 
\fB\-I\fP\fI replace\-str\fP
Zastępuje wszystkie wystąpienia \fIreplace\-str\fP w \fIpoczątkowych\-argumentach\fP
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 \fB\-x\fP oraz \fB\-L\fP \fI1\fP.
.TP 
.PD 0
\fB\-\-replace\fP[\fI=replace\-str\fP]
.TP 
.PD
\fB\-i\fP[\fIreplace\-str\fP]
Opcja jest synonimem \fB\-I\fP\fIreplace\-str\fP, jeśli podano \fIreplace\-str\fP, lub
synonimem \fB\-I\fP\fI{}\fP w przeciwnym wypadku. Opcja jest przestarzała, należy
zamiast niej używać \fB\-I\fP.
.TP 
\fB\-L\fP\fI max\-lines\fP
Używa co najwyżej \fImax\-lines\fP 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 \fB\-x\fP.
.TP 
.PD 0
\fB\-\-max\-lines\fP[=\fImax\-lines\fP]
.TP 
.PD
\fB\-l\fP[\fImax\-lines\fP]
Synonim opcji \fB\-L\fP. W przeciwieństwie do \fB\-L\fP argument \fImax\-lines\fP jest
opcjonalny; jeśli nie jest podany to jego wartością domyślną jest
jeden. Opcja \fB\-l\fP jest przestarzała ponieważ standard POSIX wymienia \fB\-L\fP
zamiast niej.
.TP 
.PD 0
\fB\-\-max\-args\fP=\fImax\-args\fP
.TP 
.PD
\fB\-n\fP\fI max\-args\fP
Używa co najwyżej \fImax\-args\fP argumentów na każdy wiersz poleceń. Może
zostać użytych mniej argumentów niż \fImax\-args\fP, jeśli zostanie przekroczony
ich rozmiar (patrz opcja \fB\-s\fP), chyba że podana jest opcja \fB\-x\fP, w którym
to przypadku \fBdziałanie programu xargs zostanie zakończone\fP.
.TP 
.PD 0
\fB\-\-interactive\fP
.TP 
.PD
\fB\-p\fP
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ę
\fB\-t\fP.
.TP 
.PD 0
\fB\-\-no\-run\-if\-empty\fP
.TP 
.PD
\fB\-r\fP
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.
.TP 
.PD 0
\fB\-\-max\-chars\fP=\fImax\-chars\fP
.TP 
.PD
\fB\-s\fP\fI max\-chars\fP
Używa co najwyżej \fImax\-chars\fP 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 \fBexec\fP(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.
.TP 
.PD 0
\fB\-\-verbose\fP
.TP 
.PD
\fB\-t\fP
Wiersz poleceń jest wypisywany na standardowe wyjście błędów przed
wykonaniem polecenia.
.TP 
\fB\-\-version\fP
Wypisuje numer wersji \fIxargs\fP i kończy działanie programu.
.TP 
\fB\-\-show\-limits\fP
Wyświetla ograniczenia na długość linii wiersza poleceń, które są
ustanawiane przez system operacyjny, przez \fBxargs\fP w przypadku rozmiaru
wewnętrznego bufora lub przez opcję \fB\-s\fP. Aby \fBxargs\fP nie zrobił nic poza
wyświetleniem ograniczeń, jego wejście powinno być przekierowane z
\fI/dev/null\fP (i być może powinna być podana opcja \fB\-\-no\-run\-if\-empty\fP).
.TP 
.PD 0
\fB\-\-exit\fP
.TP 
.PD
\fB\-x\fP
Kończy działanie programu, jeżeli rozmiar zostanie przekroczony (patrz opcja
\fB\-s\fP).
.TP 
.PD 0
\fB\-\-max\-procs\fP=\fImax\-procs\fP
.TP 
.PD
\fB\-P\fP\fI max\-procs\fP
Uruchamia co najwyżej \fImax\-procs\fP procesów za jednym razem; domyślną
wartością jest 1. Jeżeli \fImax\-procs\fP jest równe 0, \fBxargs\fP uruchomi tyle
procesów, ile to będzie możliwe za jednym razem. Opcji \fB\-P\fP należy używać
razem z opcją \fB\-n\fP; w przeciwnym razie jest możliwe, że uruchomiony
zostanie tylko jeden dodatkowy proces.
.SH PRZYKŁADY
.nf
\fBfind /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP

.fi
Wyszukuje a następnie usuwa pliki o nazwie \fBcore\fP w katalogu \fB/tmp\fP 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.
.P
\fBfind /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP

.fi
Wyszukuje a następnie usuwa pliki o nazwie \fBcore\fP w katalogu \fB/tmp\fP 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.

.P
\fBfind /tmp \-depth \-name core \-type f \-delete\fP

.fi
Wyszukuje a następnie usuwa pliki o nazwie \fBcore\fP w katalogu \fB/tmp\fP i jego
podkatalogach. Robi to jednak w sposób bardziej efektywny niż w poprzednim
przykładzie (ponieważ nie używa \fBfork\fP(2) i \fBexec\fP(2), żeby uruchomić
\fBrm\fP i nie potrzebuje dodatkowego procesu \fBxargs\fP).

.P
.nf
\fBcut \-d: \-f1 < /etc/passwd | sort | xargs echo\fP

.fi
Tworzy zwięzła listę\ wszystkich użytkowników systemu.

.P
.nf
\fBxargs sh \-c 'emacs "$@" < /dev/tty' emacs\fP

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



.SH "KOD ZAKOŃCZENIA"
\fBxargs\fP zwraca następujące kody wyjścia:
.nf
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
.fi
.P
Kody zakończenia większe od 128 są używane przez powłokę do wskazania, że
program został zabity przez sygnał.
.SH "ZGODNOŚĆ ZE STANDARDAMI"
Według stanu na wersję\ 4.2.9 programu GNU xargs, domyślnie \fBxargs\fP nie
używa logicznego znacznika końca pliku. Standard POSIX (IEEE Std 1003.1,
edycja 2004) na to pozwala.
.P
Opcje \fB\-l\fP i \fB\-i\fP 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 \- \fB\-L\fP i \fB\-I\fP.
.P
Standard POSIX pozwala implementacjom na stosowanie limitu rozmiaru
argumentów funkcji \fBexec\fP. 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
\fB\-\-show\-limits\fP, aby wyświetlić ograniczenia mające zastosowanie do
bieżącego systemu.


.SH "ZOBACZ TAKŻE"
\fBfind\fP(1), \fBlocate\fP(1), \fBlocatedb\fP(5), \fBupdatedb\fP(1), \fBfork\fP(2),
\fBexecvp\fP(3), \fBFinding Files\fP (w dokumentacji Info lub wydane w druku)
.SH BŁĘDY
Opcja \fB\-L\fP nie jest kompatybilna z opcją\ \fB\-I\fP, choć najprawdopodobniej
powinna być.
.P
Nie jest możliwe używanie \fBxargs\fP 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 \fBxargs\fP 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 \fBxargs\fP 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 \fB\-execdir\fP polecenia \fBfind\fP często może
stanowić bardziej bezpieczną alternatywę.

Podczas używania opcji \fB\-I\fP 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 \fBxargs\fP z opcją\ \fB\-I\fP. Aby ominąć to
ograniczenie można użyć opcji \fB\-s\fP do zwiększenia rozmiaru bufora używanego
przez \fBxargs\fP oraz można także użyć dodatkowego wywołania \fBxargs\fP, by
zapewnić, że bardzo długie linie się nie pojawią. Na przykład:
.P
\fBjakieśpolecenie | xargs \-s 50000 echo | xargs \-I '{}' \-s 100000 rm '{}'\fP
.P
Powyższe pierwsze wywołanie \fBxargs\fP nie ma ograniczenia na długość linii
wejściowej, ponieważ nie używa opcji \fB\-i\fP. Drugie wywołanie \fBxargs\fP 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 \fB\-i\fP nie
powinna wymuszać ograniczenia na długość linii \(em dlatego też ten opis
pojawia się w rozdziale BŁĘDY. Problem nie występuje jeśli wejście pochodzi
z programu \fBfind\fP(1), ponieważ wypisuje on tylko jedną nazwę pliku w linii.
.P
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
\fBxargs\fP(1) i ogólne, dotyczące pakietu findutils, można wysyłać na listę
dyskusyjną \fIbug\-findutils\fP. Aby się na nią zapisać, proszę wysłać e\-mail do
\fIbug\-findutils\-request@gnu.org\fP.
.SH 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>.
.PP
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ą \fB 4.4.2 \fPoryginału.