Zasadniczo xargs
jest używany w przypadkach, w których należy potokować (za pomocą symbolu |
) coś z jednego polecenia do drugiego ( Command1 | Command2
), ale dane wyjściowe z pierwszego polecenia nie są poprawnie odbierane jako dane wejściowe dla drugiego polecenia.
Zwykle dzieje się tak, gdy drugie polecenie nie obsługuje poprawnie wprowadzania danych przez Standard In (standardowe wejście) (np .: Wiele wierszy jako danych wejściowych, sposób konfiguracji linii, znaki używane jako dane wejściowe, wiele parametrów jako dane wejściowe, typ danych odbierany jako wejście itp.). Aby dać ci szybki przykład, przetestuj następujące elementy:
Przykład 1:
ls | echo
- To nic nie da, ponieważ echo
nie wie, jak obsłużyć otrzymywane dane wejściowe. Teraz w tym przypadku, jeśli korzystamyxargs
go , przetworzy dane wejściowe w sposób, który może być poprawnie obsługiwany przez echo
(np .: jako pojedynczy wiersz informacji)
ls | xargs echo
- Spowoduje to wyświetlenie wszystkich informacji z ls
jednego wiersza
Przykład 2:
Załóżmy, że mam wiele plików goLang w folderze o nazwie go. Szukałbym ich z czymś takim:
find go -name *.go -type f | echo
- Ale jeśli symbol rury tam i echo
na końcu, nie zadziała.
find go -name *.go -type f | xargs echo
- Tutaj zadziałałoby dzięki, xargs
ale gdybym chciał każdej odpowiedzi zfind
polecenia w jednym wierszu, zrobiłbym następujące:
find go -name *.go -type f | xargs -0 echo
- W tym przypadku ta sama moc wyjściowa find
byłaby pokazana przez echo
.
Polecenia takie jak cp, echo, rm, less
i inne, które wymagają lepszego sposobu obsługi danych wejściowych, zyskują, gdy są używane z xargs
.