GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Moreutils – Eine Sammlung nützlicherer Unix-Dienstprogramme

Wir alle kennen die GNU-Core-Dienstprogramme das bei allen Linux- und Unix-ähnlichen Betriebssystemen vorinstalliert ist. Dies sind die grundlegenden Dienstprogramme zur Datei-, Shell- und Textbearbeitung des GNU-Betriebssystems. Die GNU-Kerndienstprogramme enthalten die Befehle wie cat, ls, rm, mkdir, rmdir, touch, tail, wc und viele mehr, um die täglichen Operationen auszuführen. Unter diesen Dienstprogrammen gibt es auch einige andere nützliche Sammlungen von Unix-Dienstprogrammen, die nicht standardmäßig in den Unix-ähnlichen Betriebssystemen enthalten sind. Lernen Sie moreutilis kennen ,  eine wachsende Sammlung nützlicherer Unix-Dienstprogramme. Die moreutils können unter GNU/Linux und verschiedenen Unix-Varianten wie FreeBSD, openBSD und Mac OS installiert werden.

Zum Zeitpunkt der Erstellung dieses Handbuchs stellt Moreutils die folgenden Dienstprogramme bereit:

  • chronisch - Führt einen Befehl leise aus, es sei denn, er schlägt fehl.
  • kombinieren - Kombinieren Sie die Zeilen in zwei Dateien mit booleschen Operationen.
  • Fehlernummer - Schlagen Sie Fehlernamen und -beschreibungen nach.
  • ifdata - Informationen zur Netzwerkschnittstelle erhalten, ohne die ifconfig-Ausgabe zu parsen.
  • ifne - Führen Sie ein Programm aus, wenn die Standardeingabe nicht leer ist.
  • isutf8 - Prüfen Sie, ob eine Datei oder Standardeingabe utf-8 ist.
  • lckdo - Ausführen eines Programms mit gehaltener Sperre.
  • Missleitung - Leiten Sie zwei Befehle weiter und geben Sie den Exit-Status des ersten zurück.
  • parallel - Führen Sie mehrere Jobs gleichzeitig aus.
  • pinkeln - T-Stück-Standardeingang zu Rohren.
  • Schwamm - Standardeingabe aufsaugen und in eine Datei schreiben.
  • ts - Zeitstempel-Standardeingabe.
  • vidir - Bearbeiten Sie ein Verzeichnis in Ihrem Texteditor.
  • vipe - Fügen Sie einen Texteditor in eine Pipe ein.
  • zrun - Argumente zum Befehl automatisch dekomprimieren.

Installieren Sie moreutils unter Linux

Moreutils ist für viele Linux-Distributionen gepackt, sodass Sie es mit dem Paketmanager der Distribution installieren können.

Auf Arch Linux und Derivate wie Antergos , Manjaro-Linux , führen Sie den folgenden Befehl aus, um moreutils zu installieren.

$ sudo pacman -S moreutils

Auf Fedora :

$ sudo dnf install moreutils

Auf RHEL , CentOS , Wissenschaftliches Linux :

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

Auf Debian ,Ubuntu ,Linux Mint :

$ sudo apt-get install moreutils

Moreutils - Eine Sammlung nützlicherer Unix-Utilities

Sehen wir uns die Nutzungsdetails einiger moreutils-Tools an.

Das Dienstprogramm "Kombinieren"

Wie der Name schon sagt, das Kombinieren Dienstprogramm kombiniert die Sätze von Zeilen aus zwei Dateien mit booleschen Operationen wie "and", "not", "or", "xor".

  • und - Gibt Zeilen aus, die in Datei1 sind, wenn sie auch in Datei2 vorhanden sind.
  • nicht - Gibt Zeilen aus, die in Datei1, aber nicht in Datei2 sind.
  • oder - Gibt Zeilen aus, die sich in Datei1 oder Datei2 befinden.
  • oder - Gibt Zeilen aus, die entweder in Datei1 oder Datei2 sind, aber nicht in beiden Dateien.

Lassen Sie mich Ihnen ein Beispiel zeigen, damit Sie verstehen, was genau dieses Dienstprogramm tun wird. Ich habe zwei Dateien, nämlich file1 und Datei2 . Hier ist der Inhalt dieser beiden Dateien.

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

Lassen Sie mich sie nun mit der booleschen Operation "and" kombinieren.

$ combine file1 and file2
is
were
there

Wie Sie im obigen Beispiel sehen, gibt der boolesche Operator „und“ Zeilen aus, die in Datei1 enthalten sind, wenn sie auch in Datei2 vorhanden sind. Um dies klarer auszudrücken, zeigt es die gemeinsamen Zeilen (zB is, were, there) an, die in beiden Dateien vorhanden sind.

Lassen Sie uns nun den Operator "not" verwenden und das Ergebnis sehen.

$ combine file1 not file2
was
where

Wie Sie in der obigen Ausgabe sehen, zeigt der „not“-Operator die Zeilen an, die sich nur in Datei1, aber nicht in Datei2 befinden.

Das "ifdata"-Dienstprogramm

Das Dienstprogramm „ifdata“ kann verwendet werden, um zu prüfen, ob eine Netzwerkschnittstelle vorhanden ist, um Informationen über die Netzwerkschnittstelle zu erhalten, z. B. ihre IP-Adresse. Im Gegensatz zu den eingebauten Befehlen wie "ifconfig" oder "ip" hat ifdata eine einfach zu parsende Ausgabe, die so konzipiert ist, dass sie leicht von einem Shell-Skript verwendet werden kann.

Um die IP-Adressdetails einer Netzwerkschnittstelle anzuzeigen, sagen Sie wlp9s0, führen Sie Folgendes aus:

$ ifdata -p wlp9s0
192.168.43.192 255.255.255.0 192.168.43.255 1500

Um nur die Netzmaske anzuzeigen, führen Sie Folgendes aus:

$ ifdata -pn wlp9s0
255.255.255.0

So überprüfen Sie die Hardwareadresse einer Netzwerkkarte:

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

Um zu prüfen, ob eine Netzwerkkarte vorhanden ist oder nicht, verwenden Sie das Flag „-pe“.

$ ifdata -pe wlp9s0
yes

Der "Pee"-Befehl

Es ist dem "tee"-Befehl etwas ähnlich.

Sehen wir uns ein Beispiel für die Verwendung des "tee"-Befehls an.

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

Der obige Befehl erstellt zwei Dateien, nämlich file1 und Datei2 . Hängen Sie dann an beide Dateien die Zeile „Welcome to OSTechNix“ an. Und schließlich druckt die Nachricht "Willkommen bei OSTechNix"  in Ihrem Terminal.

Der "Pee"-Befehl führt eine ähnliche Funktion aus, unterscheidet sich jedoch geringfügig vom "tee"-Befehl. Sehen Sie sich den folgenden Befehl an:

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

Wie Sie in der obigen Ausgabe sehen, empfangen die beiden Instanzen des „cat“-Befehls die Ausgabe des „echo“-Befehls und zeigen sie zweimal im Terminal an.

Das Dienstprogramm "Schwamm"

Dies ist ein weiteres nützliches Dienstprogramm aus dem Moreutils-Paket. Schwamm liest die Standardeingabe und schreibt sie in die angegebene Datei. Im Gegensatz zu einer Shell-Weiterleitung saugt der Schwamm seine gesamte Eingabe auf, bevor er die Ausgabedatei schreibt.

Sehen Sie sich den Inhalt der folgenden Textdatei an.

$ cat file1 
I
You
Me
We
Us

Wie Sie sehen, enthält die Datei einige zufällige Zeilen, insbesondere "nicht" in alphabetischer Reihenfolge. Sie möchten die Inhalte in alphabetischer Reihenfolge sortieren. Was würden Sie tun?

$ sort file1 > file1_sorted

Richtig, oder? Natürlich! Wie Sie im obigen Befehl sehen, habe ich den Inhalt der Datei1 sortiert in alphabetischer Reihenfolge und speicherte sie in einer neuen Datei namens "file1_sorted" . Aber Sie können dasselbe tun, ohne eine neue Datei (z. B. file1_sorted) zu erstellen, indem Sie den Befehl "sponge" verwenden, wie unten gezeigt.

$ sort file1 | sponge file1

Überprüfen Sie nun, ob die Inhalte in alphabetischer Reihenfolge sortiert sind.

$ cat file1 
I
Me
Us
We
You

Sehen? Wir müssen keine neue Datei erstellen. Es ist sehr nützlich beim Skripting. Und das Gute daran ist, dass Sponge die Berechtigungen der Ausgabedatei beibehält, wenn sie bereits vorhanden ist.

Das "ts"-Dienstprogramm

Das Dienstprogramm "ts" gibt den Zeitstempel am Anfang jeder Zeile in der Ausgabe eines beliebigen Linux-Befehls aus.

Sehen Sie sich die Ausgabe des folgenden Befehls an:

$ 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

Führen Sie nun denselben Befehl mit dem Dienstprogramm "ts" aus, wie unten gezeigt.

$ 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

Wie Sie in der obigen Ausgabe sehen, fügt ts am Anfang jeder Zeile einen Zeitstempel hinzu. Hier ist ein weiteres Beispiel.

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

Das "Vidir"-Dienstprogramm

Das Dienstprogramm "Vidir" ermöglicht es Ihnen, den Inhalt eines bestimmten Verzeichnisses in vi zu bearbeiten Editor (oder was auch immer Sie in $EDITOR haben ). Wenn kein Verzeichnis angegeben ist, wird Ihr aktuelles Arbeitsverzeichnis bearbeitet.

Der folgende Befehl bearbeitet den Inhalt des Verzeichnisses "Desktop".

$ vidir Desktop/

Bearbeiten Sie den Inhalt eines Verzeichnisses mit vidir

Der obige Befehl öffnet das angegebene Verzeichnis in Ihrem vi Editor. Jedes Element im Bearbeitungsverzeichnis enthält eine Nummer. Sie können die Dateien jetzt wie im vi-Editor bearbeiten. Sagen Sie zum Beispiel Zeilen löschen, um Dateien aus dem Verzeichnis zu entfernen, oder Dateinamen bearbeiten, um Dateien umzubenennen.

Sie können auch die Unterverzeichnisse bearbeiten. Der folgende Befehl bearbeitet das aktuelle Arbeitsverzeichnis zusammen mit seinen Unterverzeichnissen.

$ find | vidir -

Bitte beachten Sie das "-" am Ende des Befehls. Wenn "-" als zu bearbeitendes Verzeichnis angegeben ist, liest es eine Liste von Dateinamen aus stdin und zeigt diese zur Bearbeitung an.

Wenn Sie nur die Dateien im aktuellen Arbeitsverzeichnis bearbeiten möchten, können Sie den folgenden Befehl verwenden:

$ find -type f | vidir -

Möchten Sie bestimmte Dateitypen bearbeiten, z. B. .PNG-Dateien? dann würden Sie verwenden:

$ vidir *.png

Dieser Befehl bearbeitet nur die .png-Dateien im aktuellen Verzeichnis.

Das "Vipe"-Dienstprogramm

Mit dem Befehl "vipe" können Sie Ihren Standardeditor mitten in einer Unix-Pipeline ausführen und die Daten bearbeiten, die zwischen Programmen geleitet werden.

Der folgende Befehl öffnet den vi-Editor (natürlich den Standardeditor) und erlaubt Ihnen, die Eingabe des "echo"-Befehls zu bearbeiten (d. h. Willkommen bei OSTechNix) und zeigt das Endergebnis an.

$ echo "Welcome to OSTechNIx" | vipe
Hello World

Wie Sie in der obigen Ausgabe sehen, habe ich die Eingabe „Welcome to OSTechNix“ an den vi-Editor übergeben und sie als „Hello World“ bearbeitet und die endgültige Ausgabe angezeigt.

Empfohlener Download - Kostenloses eBook:"Lernen Sie Linux in 5 Tagen"

Und das ist alles für jetzt. Ich habe nur ein paar Dienstprogramme abgedeckt. Die "moreutils" haben weitere nützliche Dienstprogramme. Die derzeit im moreutils-Paket enthaltenen Dienstprogramme habe ich bereits im Einführungsabschnitt erwähnt. Sie können die Manpages für weitere Einzelheiten zu den obigen Befehlen lesen. Sagen Sie zum Beispiel, um mehr über den Befehl „vidir“ zu erfahren, führen Sie Folgendes aus:

$ man vidir

Hoffe das hilft.


Linux
  1. Machen Sie den Bash-Verlauf mit diesen Tipps nützlicher

  2. Nützliche PS-Optionen

  3. Ist Mac OS X Unix?

  4. Unix-Fall-Regex?

  5. Ist weniger nicht einfach mehr?

Terminal-Pager

50 einfacher und nützlicher Linux-Cut-Befehl in Unix mit Beispielen

Zorin OS 15 schöner und nützlicher denn je

mkdir-Befehl unter Linux/Unix

Linux gegen Unix

Grep-Befehl unter Linux/UNIX