Xargs dla początkujących z przykładami

Xargs dla początkujących z przykładami

Za pomocą Xargs, Opisane w podręczniku Linux Xargs jako narzędzie, które buduje i wykonuje wiersze poleceń ze standardowego wejścia, raz może wywierać znaczną ilość dodatkowej zasilania nad dowolnym innym poleceniem wykonanym w wierszu poleceń Bash. Zasadniczo, Xargs przyjmie wyjście z dowolnego innego narzędzia i użyje go jako własnego wejścia do dalszego przetwarzania i działania (stąd odniesienie do wykonywania wierszy poleceń w instrukcji). Jeśli jest to twoje pierwsze tygodnie lub miesiące z Xargs, Albo dopiero zaczynasz, to najlepsze miejsce, w które możesz się dostać Xargs.

W tym samouczku się nauczysz:

  • Jak używać Xargs z wiersza poleceń w Bash
  • Jak Xargs Działa, co robi i jak go dobrze używać
  • Podstawowe przykłady użytkowania za pomocą Xargs z wiersza poleceń w Bash
Xargs dla początkujących z przykładami

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu Linuksa
Oprogramowanie Wiersz poleceń Bash, system oparty na Linuksie
Inny Xargs Narzędzie jest domyślnie zawarte w skorupce Bash
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-Wymaga wykonania podanych Commands jako zwykłego użytkownika niepewnego


Przykład 1: Prosty start

Zanurzmy się w prosty Xargs przykład:

$ echo '1'> 1 $ echo '2'> 2 $ echo '3'> 3 $ ls 1 2 3 $ ls | Xargs Cat 1 2 3 

W tym przykładzie szybko utworzyliśmy 3 pliki, odzwierciedlając liczbę, a następnie przekierowując dane wyjściowe (przy użyciu za pomocą >) do 3 poszczególnych plików wymienionych 1 Do 3. Następnie sprawdziliśmy istnienie plików za pomocą LS polecenie (listę katalogu listy).

W ostatnim poleceniu użyliśmy LS i rurowe (za pomocą |) Jest wyjście Xargs. Po Xargs polecenie wymieniliśmy nowe polecenie, które chcieliśmy Xargs wykonać W przypadku jakiegokolwiek otrzymanego wkładu indywidualnie na wejście, w tym przypadku kot (który wyświetla zawartość pliku).

Zasadniczo powyższe polecenie jest analogiczne z następującym zestawem poleceń (choć jeśli zawartość katalogu się zmieni, nie byłaby już analogiczna jako Xargs po prostu zawiera nowe wpisy do katalogu):

$ cat 1 1 $ cat 2 2 $ cat 3 3 

Przykład 2: Trochę bardziej złożone

$ ls -color = nigdy | xargs -i  cat  1 2 3 

Tutaj dodaliśmy kilka idiomów składni bash (idiom jest konstruktem/wyrażeniem języka), aby znacznie poprawić jakość i być może czytelność tego samego scenariusza jednolinowego, chociaż dane wyjściowe - w tym przypadku - pozostało takie samo.

-I opcja Xargs definiuje zastępować ciąg, który będzie używany wewnątrz polecenia XARGS do wstawienia, w punkcie, w którym ponownie używa się ciągła, otrzymane wejście i które dla każdego wejścia indywidualnie - i.mi. polecenie określone po Xargs Polecenie zostanie wykonane dla każdego wejścia indywidualnie.

--kolor = nigdy Dodatek sprawia, że ​​wyjście generowane przez LS polecenie (a zatem dane wejściowe do Xargs polecenie) znacznie bezpieczniej.

Przykład 3: Wyjście buggy

W ostatnim przykładzie, który wprowadziliśmy --kolor = nigdy Jako wskazana opcja. Spójrzmy na przykład tego, jak - bez tej opcji - możemy napotkać problemy:

Wyjście LS jest skażone po użyciu XARGS, wymagające użycia -koloru = nigdy nie opcji LS
$ mkdir 1 2 3 $ ls 1 2 3 $ ls | Xargs LS LS: Nie można uzyskać dostępu ”


Ciekawe wyjście 🙂 Więc co się tutaj stało?

Najpierw stworzyliśmy trzy katalogi, 1 Do 3, a następnie sprawdził ich stworzenie. Zwróć uwagę, że wyjście jest ciemnoniebieskie, dzięki uprzejmości kolorów powłoki bash, które są domyślnie konfigurowane na przykład Ubuntu.

Następnie wzięliśmy wynik LS i przekazał to Xargs co z kolei przekazało to z powrotem do LS. Podobne do „Echo 1 | LS można się spodziewać. Ale to nie zadziałało! Zamiast tego otrzymaliśmy zestaw kodów kolorów backr. Każdy, kto widzi to po raz pierwszy, miałby trudności z powiązaniem go z kodami kolorów.

Dodanie prostej opcji --kolor = nigdy odkażył LS wyjście jako bardziej odpowiednie dane wejściowe dla Xargs, a wyjście wygląda zgodnie z oczekiwaniami: dla katalogów 1 Do 3, jako wyjście przez LS polecenie, wymień zawartość (i.mi. podobny do LS 1; LS 2; LS3).

Przykład 4: Parsowanie tekstu z Xargs i SED

$ echo -e '1 \ n2 \ n3'> test $ cat test 1 2 3 $ ls test $ ls -color = nigdy | xargs -i  cat  | SED | [2-3] | 0 | ' 1 0 0 $ ls -Color = nigdy | xargs -i  cat  | SED | [2-3] | 0 | ' |. xargs -i  grep  $ (ls) 1 

Trochę trudniejszy przykład, ale wkrótce go zrozumiesz.

Pierwsze polecenie po prostu utworzyło plik z trzema wierszami (\N tworzy nową linię i -mi opcja echo umożliwia \N być stosowane). Następnie wyprowadzamy zawartość pliku za pomocą kot, i sprawdziłem, ile plików było obecnych za pomocą LS (tylko jeden; test Plik, który utworzyliśmy).

Następnie mamy nasze polecenie Juicy Xargs, które - jak wiecie z poprzednich przykładów - przyjmuje listę katalogu, wysyła ją Xargs i wysyła zawartość każdego pliku za pomocą kot. Wtedy mamy mały sed polecenie, które zastępuje liczby 2 I 3 do 0. Wyjście to pełna zawartość pliku testowego, ale z 2 I 3 zmienić na 0 zgodnie z instrukcją.

Wreszcie bierzemy to samo polecenie i przekazujemy je do innego Xargs. Pomyśl o tym w ten sposób; wizualnie (w twoim umyśle) zobacz 1, 0, 0 wyjście z poprzedniego polecenia (|) do finału Xargs bez poprzedniej złożoności. Zobacz, w jaki sposób możesz stopniowo budować bardzo złożone polecenia? To pokazuje także moc Xargs Krótko mówiąc, choć jest możliwe znacznie więcej.

W ostatecznym dowództwie to przekazujemy 1, 0, 0 wyjść do Grep, który będzie przeszukiwał zawartość $ (ls). $ () uruchamia subshell, wykonuje dowolne polecenie i wkłada dane wyjściowe tego polecenia w miejscu, w którym wywołano subshell. Innymi słowy, wykonujemy:

Grep „1” ./test grep „0” ./test grep „0” ./test 

A wyniki są rzeczywiście zgodnie z oczekiwaniami; 1 Tylko, ponieważ w pliku nie było zer.

Wniosek

W tym artykule spojrzeliśmy na podstawy Xargs polecenie i kilka przykładów tego, jak Xargs Można użyć parsowania tekstu i manipulacji listą katalogów. Mój następny artykuł będzie bardziej zaawansowany Xargs Zastosowanie, w tym dodatkowe przykłady.

Cieszyć się Xargs i zostaw nam komentarz ze swoim najfajniejszym Xargs Linie poleceń lub skrypty!

Powiązane samouczki Linux:

  • Przykłady, jak używać polecenia XARGS w Linux
  • Wielokrotne Xarg z przykładami
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Zagnieżdżone pętle w skryptach Bash
  • Mastering Bash Script Loops
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Podstawowe polecenia Linux
  • Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
  • Kompleks Linux Bash One-Liner Przykłady