Ricerca nel sito web

Moreutils - Una raccolta di utilità Unix più utili


Conosciamo tutti le utilità principali GNU preinstallate con tutti i sistemi operativi Linux e Unix-like. Queste sono le utilità di base per la manipolazione di file, shell e testo del sistema operativo GNU. Le utilità principali GNU contengono i comandi, come cat, ls, rm, mkdir, rmdir, touch, tail, wc e molti altri, per eseguire le operazioni quotidiane. Tra queste utilità ci sono anche altre utili raccolte di utilità Unix che non sono incluse di default nei sistemi operativi simili a Unix. Ti presentiamo moreutilis, una raccolta in continua crescita di utilità Unix sempre più utili. I moreutils possono essere installati su GNU/Linux e varie versioni Unix come FreeBSD, openBSD e Mac OS.

Elenco delle utilità disponibili in Moreutils

Al momento della stesura di questa guida, Moreutils fornisce le seguenti utilità:

  • cronico: esegue un comando silenziosamente a meno che non fallisca.
  • combina: combina le righe in due file utilizzando operazioni booleane.
  • errno: cerca i nomi e le descrizioni degli errno.
  • ifdata: ottieni informazioni sull'interfaccia di rete senza analizzare l'output ifconfig.
  • ifne: esegue un programma se l'input standard non è vuoto.
  • isutf8: controlla se un file o un input standard è utf-8.
  • lckdo - Esegue un programma con un blocco mantenuto.
  • mispipe: invia due comandi, restituendo lo stato di uscita del primo.
  • parallelo: esegui più lavori contemporaneamente.
  • pee: collega l'input standard ai tubi.
  • spugna: assorbe l'input standard e scrive su un file.
  • ts: input standard del timestamp.
  • vidir: modifica una directory nel tuo editor di testo.
  • vipe: inserisci un editor di testo in una pipe.
  • zrun: decomprime automaticamente gli argomenti da comandare.

Installa piùutils su Linux

Moreutils è incluso nel pacchetto per molte distribuzioni Linux, quindi puoi installarlo utilizzando il gestore pacchetti della distribuzione.

Su Arch Linux e derivati come Antergos, Manjaro Linux, esegui il seguente comando per installare moreutils.

sudo pacman -S moreutils

Su Fedora:

sudo dnf install moreutils

Su RHEL, CentOS, Scientific Linux:

sudo yum install epel-release
sudo yum install moreutils

SuDebian,Ubuntu,Linux Mint:

sudo apt-get install moreutils

Moreutils offre utilità Unix più utili

Vediamo i dettagli di utilizzo di alcuni strumenti Moreutils.

L'utilità "Combina".

Come suggerisce il nome, l'utilità Combina combina gli insiemi di righe di due file utilizzando operazioni booleane come "e", "non", "o", "xor".

  • e: restituisce le righe che sono nel file1 se sono presenti anche nel file2.
  • not: restituisce le righe che si trovano nel file1 ma non nel file2.
  • o: restituisce le righe che si trovano nel file1 o nel file2.
  • xor: restituisce le righe che si trovano in file1 o file2, ma non in entrambi i file.

Lascia che ti mostri un esempio, così potrai capire cosa farà esattamente questa utility. Ho due file: file1 e file2. Ecco il contenuto di questi due file.

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

Ora lasciami combinarli utilizzando l'operazione booleana "e".

$ combine file1 and file2
is
were
there

Come puoi vedere nell'esempio sopra, l'operatore booleano "e" restituisce le righe che sono nel file1 se sono presenti anche nel file2. Per dirla più chiaramente, mostra le righe comuni (Es. è, erano, lì) presenti in entrambi i file.

Usiamo ora l'operatore "not" e vediamo il risultato.

$ combine file1 not file2
was
where

Come puoi vedere nell'output sopra, l'operatore "not" mostra le righe che si trovano solo nel file1, ma non nel file2.

L'utilità "ifdata".

L'utilità "ifdata" può essere utilizzata per verificare l'esistenza di un'interfaccia di rete, per ottenere informazioni sull'interfaccia di rete, come il suo indirizzo IP. A differenza dei comandi integrati come "ifconfig" o "ip", ifdata ha un output semplice da analizzare progettato per essere facilmente utilizzato da uno script di shell.

Per visualizzare i dettagli dell'indirizzo IP di un'interfaccia di rete, ad esempio wlp9s0, esegui:

$ ifdata -p wlp9s0
192.168.43.192 255.255.255.0 192.168.43.255 1500

Per visualizzare solo la maschera di rete, eseguire:

$ ifdata -pn wlp9s0
255.255.255.0

Per verificare l'indirizzo hardware di una scheda NIC:

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

Per verificare se esiste o meno una scheda NIC, utilizza il flag "-pe".

$ ifdata -pe wlp9s0
yes

Il comando "Pipì".

È in qualche modo simile al comando "tee".

Vediamo un esempio di utilizzo del comando "tee".

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

Il comando precedente creerà due file, vale a dire file1 e file2. Quindi, aggiungi la riga "Benvenuti in OSTechNix" su entrambi i file. E infine stampa il messaggio "Benvenuto in OSTechNix" nel tuo Terminale.

Il comando "Pee" esegue una funzione simile, ma differisce leggermente dal comando "tee". Guarda il seguente comando:

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

Come puoi vedere nell'output sopra, le due istanze del comando "cat" ricevono l'output dal comando "echo" e li visualizza due volte nel Terminale.

L'utilità "Spugna".

Questa è ancora un'altra utile utilità dal pacchetto moreutils. Sponge legge l'input standard e lo scrive nel file specificato. A differenza di un reindirizzamento della shell, Sponge assorbe tutto l'input prima di scrivere il file di output.

Dai un'occhiata al contenuto del seguente file di testo.

$ cat file1 
I
You
Me
We
Us

Come vedi, il file contiene alcune righe casuali, in particolare "not" in ordine alfabetico. Vuoi ordinare i contenuti in ordine alfabetico. Cosa faresti?

sort file1 > file1_sorted

Corretto, no? Ovviamente! Come puoi vedere nel comando precedente, ho ordinato i contenuti del file1 in ordine alfabetico e li ho salvati in un nuovo file chiamato "file1_sorted". Ma puoi fare lo stesso senza crearne uno nuovo (cioè file1_sorted) usando il comando "sponge" come mostrato di seguito.

sort file1 | sponge file1

Ora controlla se i contenuti sono ordinati in ordine alfabetico.

$ cat file1 
I
Me
Us
We
You

Vedere? non è necessario creare un nuovo file. È molto utile nello scripting. E l'aspetto positivo è che Sponge preserva le autorizzazioni del file di output se esiste già.

L'utilità "ts".

L'utilità "ts" stampa il timestamp all'inizio di ogni riga nell'output di qualsiasi comando Linux.

Guarda l'output del comando seguente:

$ 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

Ora esegui lo stesso comando con l'utilità "ts" come mostrato di seguito.

$ 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

Come puoi vedere nell'output sopra, ts aggiunge un timestamp all'inizio di ogni riga. Ecco un altro esempio.

$ 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
[...]

L'utilità "Vidir".

L'utilità "Vidir" ti consente di modificare il contenuto di una directory specificata nell'editor vi (o qualunque cosa tu abbia in $EDITOR). Se non viene specificata alcuna directory, modificherà la directory di lavoro corrente.

Il seguente comando modifica il contenuto della directory denominata "Desktop".

vidir Desktop/

Modifica il contenuto di una directory con vidir

Il comando precedente aprirà la directory specificata nel tuo editor vi. Ogni elemento nella directory di modifica conterrà un numero. Ora puoi modificare i file come fai nell'editor vi. Ad esempio, elimina le righe per rimuovere file dalla directory o modifica i nomi dei file per rinominare i file.

Puoi anche modificare le sottodirectory. Il seguente comando modifica la directory di lavoro corrente insieme alle sue sottodirectory.

find | vidir -

Si prega di notare il "-" alla fine del comando. Se viene specificato "-" come directory da modificare, legge un elenco di nomi di file da stdin e visualizza quelli per la modifica.

Se desideri modificare solo i file nella directory di lavoro corrente, puoi utilizzare il seguente comando:

find -type f | vidir -

Vuoi modificare tipi di file specifici, ad esempio file .PNG? allora dovresti usare:

vidir *.png

Questo comando modifica solo i file .png nella directory corrente.

L'utilità "Vipe".

Il comando "vipe" ti consente di eseguire il tuo editor predefinito nel mezzo di una pipeline Unix e modificare i dati che vengono trasmessi tra i programmi.

Il comando seguente apre l'editor vi (editor predefinito, ovviamente) e consente di modificare l'input del comando "echo" (ad esempio Welcome To OSTechNix) e visualizza il risultato finale.

$ echo "Welcome to OSTechNIx" | vipe
Hello World

Come puoi vedere nell'output sopra, ho passato l'input "Benvenuto in OSTechNix" all'editor vi e li ho modificati come "Hello World" e ho visualizzato l'output finale.

Conclusione

E per ora è tutto. Ho trattato solo alcune utilità. Il "moreutils" ha utilità più utili. Ho già menzionato le utilità attualmente incluse nel pacchetto moreutils nella sezione introduttiva. Puoi leggere le pagine man per maggiori dettagli sui comandi precedenti. Ad esempio, per saperne di più sul comando "vidir", esegui:

man vidir

Spero che questo ti aiuti.

Risorse:

  • Utilità principali GNU
  • Sito web Moreutils

Articoli correlati