Android

Komenda Xargs w systemie Linux

Linux команда xargs.

Linux команда xargs.

Spisu treści:

Anonim

Narzędzie xargs pozwala budować i wykonywać polecenia ze standardowego wejścia. Zwykle jest używany w połączeniu z innymi poleceniami poprzez potokowanie.

Za pomocą xargs możesz podać standardowe dane wejściowe jako argument do narzędzi wiersza poleceń, takich jak mkdir i rm .

W tym samouczku omówimy podstawy korzystania z polecenia xargs .

Jak korzystać z polecenia Linux xargs

xargs odczytuje argumenty ze standardowego wejścia, oddzielone pustymi spacjami lub znakami nowej linii, i wykonuje określone polecenie, używając danych wejściowych jako argumentów polecenia. Jeśli nie podano polecenia, domyślnie jest to /bin/echo .

Składnia polecenia xargs jest następująca:

xargs]

Najbardziej podstawowym przykładem użycia xargs byłoby przekazanie kilku ciągów znaków oddzielonych spacjami za pomocą potoku do xargs i uruchomienie polecenia, które użyje tych ciągów jako argumentów.

echo "file1 file2 file3" | xargs touch

W powyższym przykładzie przesyłamy standardowe wejście do xargs , a dla każdego argumentu uruchamiane jest polecenie touch , tworząc trzy pliki. To jest tak samo, jakbyś uruchomił:

touch file1 file2 file3

Jak wyświetlić polecenie i monitować użytkownika

Aby wydrukować polecenie na terminalu przed jego wykonaniem, użyj opcji -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Wpisz y lub Y aby potwierdzić i uruchomić polecenie:

touch file1 file2 file3 ?…y

Ta opcja jest przydatna podczas wykonywania destrukcyjnych poleceń.

Jak ograniczyć liczbę argumentów

Domyślnie liczba argumentów przekazywanych do polecenia zależy od limitu systemu.

Opcja -n ( --max-args ) określa liczbę argumentów, które należy przekazać do podanego polecenia. xargs uruchamia określone polecenie tyle razy, ile jest to konieczne, aż wszystkie argumenty zostaną wyczerpane.

W poniższym przykładzie liczba argumentów odczytanych ze standardowego wejścia jest ograniczona do 1.

echo "file1 file2 file3" | xargs -n 1 -t touch

Jak widać z pełnego wyjścia poniżej, polecenie dotykowe jest wykonywane osobno dla każdego argumentu:

touch file1 touch file2 touch file3

Jak uruchamiać wiele poleceń

Aby uruchomić wiele poleceń za pomocą xargs , użyj opcji -I . Działa poprzez zdefiniowanie replace-str po opcji -I , a wszystkie wystąpienia replace-str są zastępowane argumentem przekazywanym do xargs.

Poniższy przykład xargs uruchomi dwa polecenia, najpierw utworzy pliki za pomocą touch , a następnie wyświetli listę plików za pomocą polecenia ls :

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3

Częstym wyborem dla replace-str jest % . Możesz jednak użyć innego ARGS zastępczego, na przykład ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Jak określić ogranicznik

Użyj opcji -d ( --delimiter ), aby ustawić niestandardowy ogranicznik, którym może być pojedynczy znak lub sekwencja zmiany znaczenia zaczynająca się od \ .

Poniższy przykład używamy ; jako separator:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

Jak czytać elementy z pliku

Polecenie xargs może również odczytywać elementy z pliku zamiast standardowego wejścia. Aby to zrobić, użyj opcji -a ( --arg-file ), a następnie nazwy pliku.

W poniższym przykładzie polecenie xargs ips.txt plik ips.txt i ips.txt każdy adres IP.

ips.txt

8.8.8.8 1.1.1.1

Używamy również opcji -L 1 , która instruuje xargs aby czytał jedną linię naraz. Jeśli ta opcja zostanie pominięta, xargs przekaże wszystkie adresy IP do pojedynczej komendy ping .

xargs -t -L 1 -a ips.txt ping -c 1

ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Używanie xargs z find

xargs jest najczęściej używany w połączeniu z poleceniem find . Możesz użyć find do wyszukania określonych plików, a następnie użyć xargs do wykonania operacji na tych plikach.

Aby uniknąć problemów z nazwami plików, które zawierają znaki nowej linii lub inne znaki specjalne, zawsze używaj opcji find -print0 , która powoduje, że find wypisuje pełną nazwę pliku, po której następuje znak null. Dane wyjściowe mogą być poprawnie interpretowane przez xargs przy użyciu opcji -0 , ( --null ).

W poniższym przykładzie find wypisze pełne nazwy wszystkich plików w katalogu /var/www/.cache a xargs przekaże ścieżki plików do komendy rm :

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Używanie xargs do przycinania białych znaków

xargs może być również użyty jako narzędzie do usuwania białych znaków po obu stronach danego łańcucha. Po prostu potokuj ciąg do polecenia xargs , a on dokona przycinania:

echo " Long line " | xargs

Long line

Może to być przydatne podczas porównywania ciągów w skryptach powłoki.

#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi

Strings are not equal. Strings are equal.

Wniosek

xargs to narzędzie wiersza polecenia w systemie Linux, które umożliwia budowanie i wykonywanie poleceń.

Aby uzyskać bardziej szczegółowe informacje o każdej opcji xargs , przeczytaj stronę podręcznika użytkownika xargs.

terminal xargs