GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Xargs v Linuxu

xargs nástroj umožňuje vytvářet a spouštět příkazy ze standardního vstupu. Obvykle se používá v kombinaci s dalšími příkazy prostřednictvím potrubí.

Pomocí xargs , můžete poskytnout standardní vstup jako argument nástrojům příkazového řádku, jako je mkdir a rm .

V tomto tutoriálu probereme základy používání xargs příkaz.

Jak používat Linux xargs Příkaz #

xargs přečte argumenty ze standardního vstupu, oddělené mezerami nebo novými řádky, a provede zadaný příkaz pomocí vstupu jako argumentů příkazu. Pokud není zadán žádný příkaz, výchozí je /bin/echo .

Syntaxe pro xargs příkaz je následující:

xargs [OPTIONS] [COMMAND [initial-arguments]]

Nejzákladnější příklad použití xargs by bylo předat několik řetězců oddělených mezerami pomocí svislé čáry do xargs a spusťte příkaz, který tyto řetězce použije jako argumenty.

echo "file1 file2 file3" | xargs touch

Ve výše uvedeném příkladu přivádíme standardní vstup do xargs a touch příkaz se spustí pro každý argument, čímž se vytvoří tři soubory. Je to stejné, jako kdybyste spustili:

touch file1 file2 file3

Jak zobrazit příkaz a vyzvat uživatele #

Chcete-li příkaz vytisknout na terminálu před jeho provedením, použijte -t (--verbose ) možnost:

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

Pokud chcete, aby se před provedením každého příkazu zobrazila výzva, zda se má spustit, použijte -p (--interactive ) možnost:

echo  "file1 file2 file3" | xargs -p touch

Zadejte y nebo Y pro potvrzení a spuštění příkazu:

touch file1 file2 file3 ?...y

Tato možnost je užitečná při provádění destruktivních příkazů.

Jak omezit počet argumentů #

Ve výchozím nastavení je počet argumentů předávaných příkazu určen limitem systému.

-n (--max-args ) volba určuje počet argumentů, které mají být předány danému příkazu. xargs spustí zadaný příkaz tolikrát, kolikrát je potřeba, dokud nejsou vyčerpány všechny argumenty.

V následujícím příkladu je počet argumentů, které se čtou ze standardního vstupu, omezen na 1.

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

Jak můžete vidět z podrobného výstupu níže, dotykový příkaz se provádí samostatně pro každý argument:

touch file1
touch file2
touch file3

Jak spouštět více příkazů #

Chcete-li spustit více příkazů pomocí xargs , použijte -I volba. Funguje tak, že definuje replace-str za -I a všechny výskyty replace-str jsou nahrazeny argumentem předaným xargs.

Následující xargs příklad spustí dva příkazy, nejprve vytvoří soubory pomocí touch a poté zobrazí seznam souborů s ls příkaz:

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

Běžná volba pro replace-str je % . Můžete však použít jiný zástupný symbol, například ARGS :

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

Jak zadat oddělovač #

Použijte -d (--delimiter ) možnost nastavit vlastní oddělovač, kterým může být buď jeden znak, nebo sekvence escape začínající \ .

V následujícím příkladu používáme ; jako oddělovač:

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

Jak číst položky ze souboru #

Příkaz xargs může také číst položky ze souboru namísto standardního vstupu. Chcete-li tak učinit, použijte -a (--arg-file ) následovaná názvem souboru.

V následujícím příkladu xargs příkaz přečte ips.txt a ping na každou IP adresu.

ips.txt
8.8.8.8
1.1.1.1

Používáme také -L 1 volba, která dává pokyn xargs přečíst jeden řádek najednou. Pokud je tato možnost vynechána, xargs předá všechny IP adresy jedinému ping příkaz.

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

Používání xargs pomocí find #

xargs se nejčastěji používá v kombinaci s find příkaz. Můžete použít find vyhledejte konkrétní soubory a poté použijte xargs provádět operace s těmito soubory.

Abyste se vyhnuli problémům s názvy souborů, které obsahují nové řádky nebo jiné speciální znaky, vždy použijte find -print0 volba, která způsobí find vytiskne celý název souboru následovaný znakem null. Tento výstup lze správně interpretovat pomocí xargs pomocí -0 , (--null ).

V následujícím příkladu find vytiskne úplné názvy všech souborů v /var/www/.cache adresář a xargs předá cesty k souboru do rm příkaz:

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

Použití xargs k oříznutí mezer mezi znaky #

xargs lze také použít jako nástroj k odstranění mezer z obou stran daného řetězce. Jednoduše zadejte řetězec do xargs a provede oříznutí:

echo "  Long line " | xargs
Long line

To může být užitečné při porovnávání řetězců ve skriptech shellu.

#!/bin/bash

VAR1=" Linuxize "
VAR2="Linuxize"

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

## Using xargs to trim VAR1
if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi
Strings are not equal.
Strings are equal.

Závěr č.

xargs je nástroj příkazového řádku v systému Linux, který vám umožňuje vytvářet a spouštět příkazy.

Pro podrobnější informace o každém xargs možnost, přečtěte si manuálovou stránku xargs.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. 11 Příklady příkazů Xargs v Linuxu

  2. Linuxový příkaz mv

  3. Linux du command

  1. Linuxový ip příkaz

  2. Linux cd příkaz

  3. 10 Příklady příkazů Xargs v Linuxu / UNIXu

  1. Jak používat příkaz xargs pro Linux

  2. Linux příkaz ifconfig

  3. Příklady příkazů xargs v Linuxu