Ú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ářů.