Při používání příkazového řádku můžete přímo předat výstup jednoho programu (například nástroje, který generuje nějaké systémové informace nebo statistiky) jako vstup pro jiný program (například nástroje pro filtrování textu nebo vyhledávání vzorů jako grep, sed nebo awk, pro další zpracování) pomocí potrubí.
Přečtěte si také :Naučte se základy toho, jak funguje přesměrování I/O (vstup/výstup) v systému Linux
Dva nejdůležitější nástroje příkazového řádku, které lze použít s potrubím k vytváření příkazových řádků, jsou:
xargs
– čte proudy dat ze standardního vstupu, poté generuje a spouští příkazové řádky.tee
– čte ze standardního vstupu a současně zapisuje na standardní výstup a jeden nebo více souborů. Je to spíše příkaz pro přesměrování.
V tomto jednoduchém článku popíšeme, jak vytvořit a spustit více příkazů ze standardního vstupu pomocí potrubí , tričko a xargs příkazy v Linuxu.
Nejjednodušší syntaxe pro použití pipe , který jste již mohli vidět v příkazech v mnoha linuxových tutoriálech, je následující. Můžete však vytvořit delší příkazový řádek s několika příkazy.
$ command1 args | command2 args OR # command1 args | command2 args | command3 args ...
Níže je příklad použití kanálu k předání výstupu příkazu dmesg příkazu head.
$ dmesg | head
Jak používat xargs ke spouštění příkazů
V tomto příkladu druhý příkaz převádí víceřádkový výstup na jednořádkový pomocí xargs.
$ ls -1 *.sh $ ls -1 *.sh | xargs
Chcete-li spočítat počet řádků/slov/znaků v každém souboru v seznamu, použijte níže uvedené příkazy.
$ ls *.sh | xargs wc -l #count number of lines in each file $ ls *.sh | xargs wc -w #count number of words in each file $ ls *.sh | xargs wc -c #count number of characters in each file $ ls *.sh | xargs wc #count lines, words and characters in each file
Níže uvedený příkaz vyhledá a rekurzivně odstraní adresář s názvem All
v aktuálním adresáři.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
Příkaz find s volbou -print0
akce umožňuje tisk celé cesty k adresáři na standardní výstup, po níž následuje znak null a -0 xargs
flag se zabývá mezerou v názvech souborů.
Další praktický příkaz xargs najdete příklady použití v těchto článcích:
- Jak zkopírovat soubor do více adresářů v systému Linux
- Přejmenujte všechny názvy souborů a adresářů na malá písmena v systému Linux
- 4 způsoby hromadného převodu PNG na JPG a naopak
- 3 způsoby, jak odstranit všechny soubory v adresáři kromě jednoho nebo několika souborů s příponami
Jak používat Tee s příkazy v Linuxu
Tento příklad ukazuje, jak odeslat výstup příkazu na standardní výstup a uložit do souboru; příkaz níže vám umožňuje zobrazit nejběžnější procesy podle nejvyššího využití paměti a CPU v Linuxu.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
Chcete-li přidat data do existujícího souboru (souborů), předejte -a
vlajka.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Více informací najdete v tee a xargs manuálové stránky.
$ man xargs $ man tee
To je vše! Nezapomeňte se podívat na náš speciální článek:A – Z Linux Commands – Přehled s příklady.
V tomto článku jsme popsali, jak generovat příkazové řádky pomocí potrubí; příkazy xargs a tee. Prostřednictvím formuláře pro zpětnou vazbu níže můžete položit jakékoli otázky nebo sdílet jakékoli myšlenky.