Xargs

xargs – polecenie uniksowych i większości uniksopodobnych systemów operacyjnych, używane do budowania i wykonywania poleceń ze standardowego wejścia. Jądro Linuxa o wersji do 2.6.23 nie może pobierać dowolnie długiej listy argumentów[1], więc zadaniem xargs jest podzielenie jej na wystarczająco małe podlisty.

Na przykład polecenie:

 rm /path/*

lub

 rm `find /path -type f`

może spowodować błąd i wyświetlenie komunikatu: "Argument list too long" jeżeli w /path znajduje się zbyt wiele plików. Jednakże poniższa wersja (odpowiednik rm `find /path -type f`) nie powinna już sprawiać kłopotów:

 find /path -type f -print0 | xargs -0 rm

W tym przykładzie, find przesyła na wejście xargs długą listę nazw plików. Xargs dokonuje podziału na podlisty i dopiero wtedy wywołuje polecenie rm dla każdej z nich. To polecenie jest wydajniejsze niż gdybyśmy chcieli napisać:

 find /path -type f -exec rm '{}' \;

co spowoduje wywołanie rm dla każdego, pojedynczego pliku. Warto jednak zwrócić uwagę na to, że w nowszych wersjach find poniższy wariant wykonuje dokładnie to samo, co wersja z użyciem xargs:

 find /path -type f -exec rm '{}' +

xargs często wykazuje się takim samym działaniem, jak backquote, lecz jest on bardziej uniwersalny i okazuje się bezpieczniejszym gdy na wejściu pojawiają się znaki białe lub specjalne. Dobrze łączyć go z poleceniami zwracającymi długie listy plików, jak chociażby find, locate, czy grep. Musimy jednak pamiętać wtedy o parametrze -0, jako że bez niego xargs nie radzi sobie najlepiej z nazwami zawierającymi ', " i spacje.


From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Nelliwinne