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.