Úvod
Některé příkazy Linuxu přebírají vstup jak ze standardního vstupu (stdin), tak jako argument příkazového řádku. Jiné jsou však navrženy tak, aby vstupy braly pouze jako argument. Aby bylo možné zpracovat standardní vstup, musí tyto příkazy Linuxu používat xargs
příkaz.
V tomto tutoriálu se naučíte používat Linux xargs
příkaz pro manipulaci se standardním vstupem a práci s dalšími příkazy.
Předpoklady
- Systém se systémem Linux
- Přístup k příkazovému řádku
Co je příkaz xargs?
xargs
příkaz vytváří a provádí příkazy poskytované prostřednictvím standardního vstupu. Vezme vstup a převede ho na argument příkazu pro jiný příkaz. Tato funkce je užitečná zejména při správě souborů, kde xargs
se používá v kombinaci s rm
, cp
, mkdir
a další podobné příkazy.
Jak používat příkaz xargs s příklady
Při samostatném použití xargs
vyzve uživatele k zadání textového řetězce, který pak předá echo
příkaz.
Příklad ukazuje příklad vstupu, za nímž následuje výstup echo
příkaz.
Kombinovat xargs s find
Příkaz find často předchází xargs
v potrubí. Použijte jej k poskytnutí seznamu souborů pro další zpracování pomocí xargs
. Syntaxe vypadá takto:
find [location] -name "[search-term]" -type f | xargs [command]
Výše uvedený příklad ukazuje použití find
k nalezení všech souborů s .sh
rozšíření. Seznam souborů je poté přesměrován do xargs
, který používá rm
příkaz k jejich odstranění.
Nicméně xargs
nezahrnuje automaticky soubory, které ve svých názvech obsahují mezery. Chcete-li zahrnout i tyto soubory, použijte -print0
možnost find
a -0
možnost pro xargs
:
find [location] -name "[search-term]" -type f -print0 | xargs -0 [command]
rm
nyní smaže všechny soubory s .sh
rozšíření.
Kombinovat xargs s grep
Použijte xargs
pomocí příkazu grep k vyhledání řetězce v seznamu souborů, který poskytuje find
příkaz.
find . -name '[search-term]' | xargs grep '[string-to-find-in-files]'
Výše uvedený příklad hledal všechny soubory s .txt
a přenesl je do xargs
, který poté provedl grep
příkaz na nich.
Vícenásobné příkazy Xargs
Spuštění více než jednoho příkazu pomocí xargs
, použijte -I
volba. Syntaxe je:
[command-providing-input] | xargs -I % sh -c '[command-1] %; [command-2] %'
V příkladu obsah file4.txt
byly zobrazeny jako první. Poté mkdir
vytvořil složku pro každé slovo v souboru.
Čtení položek ze souboru
Jak již bylo zmíněno, xargs
přečte standardní vstup. Použijte -a
možnost číst místo toho obsah souboru.
xargs -a [filename]
Vyhledání a archivace obrázků pomocí tar
Při použití s příkazem tar xargs
vytvoří tar.gz
archivovat a naplní jej soubory, které poskytuje find
příkaz.
find [location] -name "[search-term]" -type f -print0 | xargs -0 tar -cvzf [tar-gz-archive-name]
Příkaz pro tisk
Chcete-li zobrazit příkazy prováděné xargs
ve standardním výstupu použijte -t
možnost.
[command-providing-input] | xargs -t [command]
Ve výše uvedeném příkladu si všimněte, že xargs
provedl příkaz mkdir na celém řetězci poskytnutém echo
.
Schválit provedení příkazu xargs
Některé xargs
operace, jako je odstranění souborů a složek, jsou nevratné. Chcete-li ovládat provádění těchto příkazů, použijte -p
možnost.
[command-providing-input] | xargs -p [command]
Když provedete příkaz s -p
možnost, xargs
zobrazí potvrzovací řádek před jeho provedením. Zadejte y
pokračovat, nebo n
pro zrušení operace.
Omezit výstup na řádek
Někdy je potřeba kontrolovat počet argumentů xargs
bere ve stejnou dobu. Tuto akci proveďte pomocí -n
možnost následovaná počtem argumentů, které omezujete xargs
komu:
[command-providing-input] | xargs -n [number] [command]
V níže uvedeném příkladu xargs
převezme řetězec z echo
příkaz a rozdělí jej na tři. Poté provede další echo
pro každou z částí:
Určete oddělovač
Výchozí xargs
oddělovač je prázdné místo. Chcete-li změnit výchozí oddělovač, použijte -d
příkaz následovaný jedním znakem nebo znakem escape, například n
(nový řádek).
[command-providing-input] | xargs -d [new-delimiter] | xargs [command]
V níže uvedeném příkladu xargs
příkaz dává systému pokyn, aby použil *
jako oddělovač a použijte mkdir
na každý ze získaných argumentů.
Seznam všech uživatelských účtů Linuxu v systému
Použijte xargs
k uspořádání výstupu příkazů, jako je cut
. Zvažte následující příklad:
cut -d: -f1 < /etc/passwd | sort | xargs
Příkaz cut přistupuje k /etc/passwd
a používá :
oddělovač pro oříznutí začátku každého řádku v souboru. Výstup je poté přesměrován do sort
, který seřadí přijaté řetězce, a nakonec na xargs
který je zobrazí:
Odstranění prázdných mezer v řetězci
Od xargs
ignoruje prázdná místa při hledání argumentů, příkaz je užitečný pro odstranění zbytečných mezer z řetězců.
echo "[string-with-unnecessary-spaces]" | xargs
Seznam počtu řádků/slov/znaků v každém souboru
Použijte xargs
pomocí příkazu wc zobrazíte seznam souborů s počtem řádků, slov a znaků.
ls | xargs wc
Níže uvedený příklad nařídil příkazu ls, aby přešel do xargs
pouze soubory obsahující slovo „příklad“. xargs
poté použil wc
do tohoto seznamu:
Kopírovat soubor do více adresářů
Zkopírujte soubory do více adresářů pomocí xargs
příkaz. Syntaxe je jednoduchá:
echo [directory-1] [directory-2] | xargs -n 1 cp -v [filename]
echo
příkaz poskytuje názvy adresářů a xargs
používá příkaz cp ke zkopírování daného souboru do každého z adresářů.