GNU/Linux >> Znalost Linux >  >> Linux

Moreutils – Sbírka užitečnějších unixových nástrojů

Všichni víme o základních nástrojích GNU který je předinstalován se všemi operačními systémy Linux a Unix. Toto jsou základní nástroje pro manipulaci se soubory, shellem a textem operačního systému GNU. Základní nástroje GNU obsahují příkazy, jako jsou cat, ls, rm, mkdir, rmdir, touch, tail, wc a mnoho dalších, pro provádění každodenních operací. Mezi těmito nástroji je také několik dalších užitečných souborů unixových nástrojů, které nejsou standardně zahrnuty v operačních systémech podobných Unixu. Seznamte se s moreutilis , rostoucí sbírka užitečnějších unixových nástrojů. Moreutils lze nainstalovat na GNU/Linux a různé varianty Unixu, jako je FreeBSD, openBSD a Mac OS.

V době psaní této příručky poskytuje Moreutils následující nástroje:

  • chronické - Spustí příkaz tiše, pokud se nezdaří.
  • kombinovat - Spojte řádky ve dvou souborech pomocí booleovských operací.
  • errno - Vyhledejte chybná jména a popisy.
  • ifdata - Získejte informace o síťovém rozhraní bez analýzy výstupu ifconfig.
  • ifne - Spusťte program, pokud standardní vstup není prázdný.
  • isutf8 - Zkontrolujte, zda je soubor nebo standardní vstup utf-8.
  • lckdo - Spusťte program se zamčeným zámkem.
  • mispipe - Propojte dva příkazy a vrátíte stav ukončení prvního.
  • paralelní - Spusťte více úloh najednou.
  • čůrat - standardní vstup T do potrubí.
  • houbu - Nasajte standardní vstup a zapište do souboru.
  • ts - standardní vstup časového razítka.
  • vidir – Upravte adresář v textovém editoru.
  • vipe - Vložte textový editor do potrubí.
  • zrun - Automaticky dekomprimovat argumenty pro příkaz.

Nainstalujte moreutils na Linux

Moreutils je součástí balíčku pro mnoho distribucí Linuxu, takže jej můžete nainstalovat pomocí správce balíčků dané distribuce.

V systému Arch Linux a deriváty jako Antergos , Manjaro Linux , spusťte následující příkaz pro instalaci moreutils.

$ sudo pacman -S moreutils

Na Fedoře :

$ sudo dnf install moreutils

Na RHEL , CentOS , Scientific Linux :

$ sudo yum install epel-release
$ sudo yum install moreutils

VDebian ,Ubuntu ,Linux Mint :

$ sudo apt-get install moreutils

Moreutils – sbírka užitečnějších unixových nástrojů

Podívejme se na podrobnosti o použití některých nástrojů moreutils.

Nástroj "Combine"

Jak název napovídá, Kombinovat obslužný program kombinuje sady řádků ze dvou souborů pomocí booleovských operací, jako je "a", "ne", "nebo", "xor".

  • a - Výstup řádků, které jsou v souboru1, pokud jsou také přítomny v souboru2.
  • ne - Výstup řádků, které jsou v souboru1, ale ne v souboru2.
  • nebo - Výstup řádků, které jsou v soubor1 nebo soubor2.
  • xor - Výstup řádků, které jsou buď v souboru1 nebo v souboru2, ale ne v obou souborech.

Dovolte mi ukázat vám příklad, abyste pochopili, co přesně tento nástroj udělá. Mám dva soubory, jmenovitě file1 a soubor2 . Zde je obsah těchto dvou souborů.

$ cat file1
is
was
were
where
there
$ cat file2
is
were
there

Nyní mi dovolte je zkombinovat pomocí booleovské operace „and“.

$ combine file1 and file2
is
were
there

Jak vidíte ve výše uvedeném příkladu, logický operátor "and" vypisuje řádky, které jsou v souboru1, pokud jsou přítomny také v souboru2. Aby to bylo jasnější, zobrazuje společné řádky (např. is, were, there), které jsou přítomné v obou souborech.

Nyní použijeme operátor "not" a uvidíme výsledek.

$ combine file1 not file2
was
where

Jak vidíte ve výše uvedeném výstupu, operátor „not“ zobrazuje řádky, které jsou pouze v souboru1, ale nikoli v souboru2.

Nástroj "ifdata"

Nástroj „ifdata“ lze použít ke kontrole existence síťového rozhraní, k získání informací o síťovém rozhraní, jako je jeho IP adresa. Na rozdíl od vestavěných příkazů jako "ifconfig" nebo "ip" má ifdata snadno analyzovatelný výstup, který je navržen tak, aby byl snadno použitelný skriptem shellu.

Chcete-li zobrazit podrobnosti o IP adrese síťového rozhraní, řekněte wlp9s0, spusťte:

$ ifdata -p wlp9s0
192.168.43.192 255.255.255.0 192.168.43.255 1500

Chcete-li zobrazit pouze masku sítě, spusťte:

$ ifdata -pn wlp9s0
255.255.255.0

Kontrola hardwarové adresy síťové karty:

$ ifdata -ph wlp9s0
A0:15:46:90:12:3E

Chcete-li zkontrolovat, zda síťová karta existuje nebo ne, použijte příznak „-pe“.

$ ifdata -pe wlp9s0
yes

Příkaz "Pee"

Je to trochu podobné příkazu "tee".

Podívejme se na příklad použití příkazu "tee".

$ echo "Welcome to OSTechNIx" | tee file1 file2
Welcome to OSTechNIx

Výše uvedený příkaz vytvoří dva soubory, konkrétně soubor1 a soubor2 . Poté k oběma souborům připojte řádek „Vítejte v OSTechNix“. A nakonec vytiskne zprávu „Vítejte v OSTechNix“ ve vašem terminálu.

Příkaz „Čurat“ plní podobnou funkci, ale mírně se liší od příkazu „tee“. Podívejte se na následující příkaz:

$ echo "Welcome to OSTechNIx" | pee cat cat
Welcome to OSTechNIx
Welcome to OSTechNIx

Jak vidíte na výše uvedeném výstupu, dvě instance příkazu „cat“ přijímají výstup z příkazu „echo“ a dvakrát je zobrazí v terminálu.

Nástroj "Houba"

Toto je další užitečný nástroj z balíčku moreutils. Houba přečte standardní vstup a zapíše jej do zadaného souboru. Na rozdíl od přesměrování shellu houba nasákne veškerý svůj vstup před zápisem výstupního souboru.

Podívejte se na obsah následujícího textového souboru.

$ cat file1 
I
You
Me
We
Us

Jak vidíte, soubor obsahuje některé náhodné řádky, zejména „ne“ v abecedním pořadí. Chcete seřadit obsah v abecedním pořadí. Co byste udělali?

$ sort file1 > file1_sorted

Správně, ne? Samozřejmě! Jak vidíte ve výše uvedeném příkazu, seřadil jsem obsah souboru1 v abecedním pořadí a uložili je do nového souboru s názvem "file1_sorted" . Ale můžete udělat totéž, aniž byste vytvořili nový (tj. soubor1_sorted) pomocí příkazu "sponge", jak je znázorněno níže.

$ sort file1 | sponge file1

Nyní zkontrolujte, zda je obsah seřazen v abecedním pořadí.

$ cat file1 
I
Me
Us
We
You

Vidět? nemusíme vytvářet nový soubor. Je to velmi užitečné ve skriptování. A dobrá věc je, že houba zachovává oprávnění výstupního souboru, pokud již existuje.

Nástroj "ts"

Nástroj "ts" vytiskne časové razítko na začátek každého řádku ve výstupu libovolného příkazu Linuxu.

Podívejte se na výstup následujícího příkazu:

$ ping -c 2 localhost
PING localhost(localhost.localdomain (::1)) 56 data bytes
64 bytes from localhost.localdomain (::1): icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from localhost.localdomain (::1): icmp_seq=2 ttl=64 time=0.079 ms

--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1018ms
rtt min/avg/max/mdev = 0.055/0.067/0.079/0.012 ms

Nyní spusťte stejný příkaz s nástrojem "ts", jak je znázorněno níže.

$ ping -c 2 localhost | ts
Aug 21 13:32:28 PING localhost(localhost (::1)) 56 data bytes
Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.063 ms
Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.113 ms
Aug 21 13:32:28 
Aug 21 13:32:28 --- localhost ping statistics ---
Aug 21 13:32:28 2 packets transmitted, 2 received, 0% packet loss, time 4ms
Aug 21 13:32:28 rtt min/avg/max/mdev = 0.063/0.088/0.113/0.025 ms

Jak vidíte ve výše uvedeném výstupu, ts přidává časové razítko na začátek každého řádku. Zde je další příklad.

$ ls -l | ts
Aug 21 13:34:25 total 120
Aug 21 13:34:25 drwxr-xr-x  2 sk users 12288 Aug 20 20:05 Desktop
Aug 21 13:34:25 drwxr-xr-x  2 sk users  4096 Aug 10 18:44 Documents
Aug 21 13:34:25 drwxr-xr-x 24 sk users 12288 Aug 21 13:06 Downloads
[...]

Nástroj "Vidir"

Nástroj "Vidir" vám umožňuje upravovat obsah zadaného adresáře v vi editor (Nebo cokoli, co máte v $EDITOR ). Pokud není zadán žádný adresář, upraví váš aktuální pracovní adresář.

Následující příkaz upravuje obsah adresáře s názvem "Desktop".

$ vidir Desktop/

Upravte obsah adresáře pomocí vidir

Výše uvedený příkaz otevře zadaný adresář ve vašem vi editor. Každá položka v editačním adresáři bude obsahovat číslo. Nyní můžete upravovat soubory jako v editoru vi. Řekněme například odstranění řádků pro odstranění souborů z adresáře nebo úpravou názvů souborů pro přejmenování souborů.

Můžete také upravovat podadresáře. Následující příkaz upraví aktuální pracovní adresář spolu s jeho podadresáři.

$ find | vidir -

Všimněte si prosím "-" na konci příkazu. Pokud je jako adresář, který se má upravit, zadán "-", přečte seznam názvů souborů ze standardního nastavení a zobrazí je pro úpravy.

Pokud chcete upravit pouze soubory v aktuálním pracovním adresáři, můžete použít následující příkaz:

$ find -type f | vidir -

Chcete upravit konkrétní typy souborů, řekněme soubory .PNG? pak byste použili:

$ vidir *.png

Tento příkaz upravuje pouze soubory .png v aktuálním adresáři.

Nástroj "Vipe"

Příkaz "vipe" vám umožňuje spustit váš výchozí editor uprostřed unixového kanálu a upravit data, která jsou přenášena mezi programy.

Následující příkaz otevře editor vi (samozřejmě výchozí editor) a umožní vám upravit vstup příkazu „echo“ (tj. Welcome To OSTechNix) a zobrazí konečný výsledek.

$ echo "Welcome to OSTechNIx" | vipe
Hello World

Jak vidíte ve výše uvedeném výstupu, předal jsem vstup „Vítejte v OSTechNix“ editoru vi a upravil jsem je jako „Hello World“ a zobrazil konečný výstup.

Doporučené staženíZdarma e-kniha:„Naučte se Linux za 5 dní“

A to je zatím vše. Pokryl jsem pouze několik utilit. "moreutils" má více užitečných nástrojů. O aktuálně obsažených utilitách v balíčku moreutils jsem se již zmínil v úvodní části. Pro podrobnější informace o výše uvedených příkazech si můžete přečíst manuálové stránky. Řekněte například, chcete-li se dozvědět více o příkazu "vidir", spusťte:

$ man vidir

Doufám, že to pomůže.


Linux
  1. Udělejte duův výstup užitečnějším s tímto elegantním trikem

  2. Užitečné možnosti ps

  3. Je Linux Unix?

  1. Udělejte z historie Bash užitečnější pomocí těchto tipů

  2. Linux – Je Linux Unix?

  3. Pole v Unix Bourne Shell?

  1. Je Mac Os X Unix?

  2. Unix Case Regex?

  3. Není méně jen více?