GNU/Linux >> Tutoriels Linux >  >> Linux

Moreutils - Une collection d'utilitaires Unix plus utiles

Nous connaissons tous les utilitaires de base GNU qui est préinstallé avec tous les systèmes d'exploitation de type Linux et Unix. Ce sont les utilitaires de base de manipulation de fichiers, de shell et de texte du système d'exploitation GNU. Les utilitaires du noyau GNU contiennent les commandes, telles que cat, ls, rm, mkdir, rmdir, touch, tail, wc et bien d'autres, pour effectuer les opérations quotidiennes. Parmi ces utilitaires, il existe également d'autres ensembles utiles d'utilitaires Unix qui ne sont pas inclus par défaut dans les systèmes d'exploitation de type Unix. Découvrez moreutilis , une collection croissante d'utilitaires Unix plus utiles. Les moreutils peuvent être installés sur GNU/Linux et diverses versions d'Unix telles que FreeBSD, openBSD et Mac OS.

Au moment de la rédaction de ce guide, Moreutils fournit les utilitaires suivants :

  • chronique - Exécute une commande silencieusement sauf si elle échoue.
  • combiner - Combinez les lignes dans deux fichiers à l'aide d'opérations booléennes.
  • errnon - Recherchez les noms et les descriptions des erreurs.
  • ifdata - Obtenez des informations sur l'interface réseau sans analyser la sortie ifconfig.
  • ifne - Lancer un programme si l'entrée standard n'est pas vide.
  • isutf8 - Vérifiez si un fichier ou une entrée standard est en utf-8.
  • lckdo - Exécuter un programme avec un verrou maintenu.
  • erreur de conduite - Canalisez deux commandes, renvoyant l'état de sortie de la première.
  • parallèle - Exécutez plusieurs tâches à la fois.
  • faire pipi - té d'entrée standard aux tuyaux.
  • éponge - Imprégnez-vous de l'entrée standard et écrivez dans un fichier.
  • cs - entrée standard d'horodatage.
  • vider - Modifier un répertoire dans votre éditeur de texte.
  • vipe - Insérer un éditeur de texte dans un tube.
  • zrun - Décompressez automatiquement les arguments de la commande.

Installer moreutils sur Linux

Moreutils est empaqueté pour de nombreuses distributions Linux, vous pouvez donc l'installer à l'aide du gestionnaire de paquets de la distribution.

Sur Arch Linux et des dérivés tels que Antergos , Manjaro Linux , exécutez la commande suivante pour installer moreutils.

$ sudo pacman -S moreutils

Sur Fedora :

$ sudo dnf install moreutils

Sur RHEL , CentOS , Linux scientifique :

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

SurDebian ,Ubuntu ,Linux Mint :

$ sudo apt-get install moreutils

Moreutils - Une collection d'utilitaires Unix plus utiles

Voyons les détails d'utilisation de certains outils moreutils.

L'utilitaire "Combiner"

Comme son nom l'indique, la Combine L'utilitaire combine les ensembles de lignes de deux fichiers à l'aide d'opérations booléennes telles que "et", "non", "ou", "xor".

  • et - Affiche les lignes qui sont dans le fichier1 si elles sont également présentes dans le fichier2.
  • pas - Affiche les lignes qui sont dans le fichier1 mais pas dans le fichier2.
  • ou - Affiche les lignes qui sont dans file1 ou file2.
  • x ou - Affiche les lignes qui se trouvent soit dans le fichier1, soit dans le fichier2, mais pas dans les deux fichiers.

Laissez-moi vous montrer un exemple, afin que vous puissiez comprendre exactement ce que cet utilitaire va faire. J'ai deux fichiers à savoir file1 et fichier2 . Voici le contenu de ces deux fichiers.

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

Maintenant, permettez-moi de les combiner en utilisant l'opération booléenne "et".

$ combine file1 and file2
is
were
there

Comme vous le voyez dans l'exemple ci-dessus, l'opérateur booléen "et" affiche les lignes qui se trouvent dans le fichier1 si elles sont également présentes dans le fichier2. Pour le dire plus clairement, il affiche les lignes communes (Ex. est, étaient, là) qui sont présentes dans les deux fichiers.

Utilisons maintenant l'opérateur "not" et voyons le résultat.

$ combine file1 not file2
was
where

Comme vous le voyez dans la sortie ci-dessus, l'opérateur "not" affiche les lignes qui se trouvent uniquement dans le fichier1, mais pas dans le fichier2.

L'utilitaire "ifdata"

L'utilitaire "ifdata" peut être utilisé pour vérifier l'existence d'une interface réseau, pour obtenir des informations sur l'interface réseau, telles que son adresse IP. Contrairement aux commandes intégrées telles que "ifconfig" ou "ip", ifdata a une sortie simple à analyser qui est conçue pour être facilement utilisée par un script shell.

Pour afficher les détails de l'adresse IP d'une interface réseau, par exemple wlp9s0, exécutez :

$ ifdata -p wlp9s0
192.168.43.192 255.255.255.0 192.168.43.255 1500

Pour afficher uniquement le masque de réseau, exécutez :

$ ifdata -pn wlp9s0
255.255.255.0

Pour vérifier l'adresse matérielle d'une carte réseau :

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

Pour vérifier si une carte NIC existe ou non, utilisez l'indicateur "-pe".

$ ifdata -pe wlp9s0
yes

La commande "Pipi"

C'est un peu similaire à la commande "tee".

Voyons un exemple d'utilisation de la commande "tee".

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

La commande ci-dessus créera deux fichiers à savoir file1 et fichier2 . Ensuite, ajoutez la ligne "Welcome to OSTechNix" sur les deux fichiers. Et enfin imprime le message "Bienvenue dans OSTechNix"  dans votre terminal.

La commande "Pee" remplit une fonction similaire, mais diffère légèrement de la commande "tee". Regardez la commande suivante :

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

Comme vous le voyez dans la sortie ci-dessus, les deux instances de la commande "cat" reçoivent la sortie de la commande "echo" et les affichent deux fois dans le terminal.

L'utilitaire "Eponge"

C'est encore un autre utilitaire utile du paquet moreutils. Éponge lit l'entrée standard et l'écrit dans le fichier spécifié. Contrairement à une redirection shell, sponge absorbe toutes ses entrées avant d'écrire le fichier de sortie.

Jetez un oeil au contenu du fichier texte suivant.

$ cat file1 
I
You
Me
We
Us

Comme vous le voyez, le fichier contient des lignes aléatoires, en particulier "not" dans l'ordre alphabétique. Vous souhaitez trier le contenu par ordre alphabétique. Que feriez-vous ?

$ sort file1 > file1_sorted

Exact, n'est-ce pas ? Bien sûr! Comme vous le voyez dans la commande ci-dessus, j'ai trié le contenu du file1 par ordre alphabétique et les a enregistrés dans un nouveau fichier appelé "file1_sorted" . Mais, vous pouvez faire la même chose sans en créer un nouveau (c'est-à-dire file1_sorted) en utilisant la commande "sponge" comme indiqué ci-dessous.

$ sort file1 | sponge file1

Maintenant, vérifiez si le contenu est trié par ordre alphabétique.

$ cat file1 
I
Me
Us
We
You

Voir? nous n'avons pas besoin de créer un nouveau fichier. C'est très utile dans les scripts. Et la bonne chose est que sponge préserve les autorisations du fichier de sortie s'il existe déjà.

L'utilitaire "ts"

L'utilitaire "ts" imprime l'horodatage au début de chaque ligne dans la sortie de toute commande Linux.

Regardez la sortie de la commande suivante :

$ 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

Maintenant, exécutez la même commande avec l'utilitaire "ts" comme indiqué ci-dessous.

$ 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

Comme vous le voyez dans la sortie ci-dessus, ts ajoute un horodatage au début de chaque ligne. Voici un autre exemple.

$ 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'utilitaire "Vidir"

L'utilitaire "Vidir" vous permet d'éditer le contenu d'un répertoire spécifié dans vi éditeur (ou tout ce que vous avez dans $EDITOR ). Si aucun répertoire n'est spécifié, il modifiera votre répertoire de travail actuel.

La commande suivante modifie le contenu du répertoire appelé "Desktop".

$ vidir Desktop/

Modifier le contenu d'un répertoire avec vidir

La commande ci-dessus ouvrira le répertoire spécifié dans votre vi éditeur. Chaque élément du répertoire d'édition contiendra un numéro. Vous pouvez maintenant éditer les fichiers comme vous le faites dans l'éditeur vi. Supposons, par exemple, supprimer des lignes pour supprimer des fichiers du répertoire ou modifier des noms de fichiers pour renommer des fichiers.

Vous pouvez également modifier les sous-répertoires. La commande suivante modifie le répertoire de travail actuel ainsi que ses sous-répertoires.

$ find | vidir -

Veuillez noter le "-" à la fin de la commande. Si "-" est spécifié comme répertoire à modifier, il lit une liste de noms de fichiers à partir de stdin et affiche ceux à modifier.

Si vous souhaitez modifier uniquement les fichiers du répertoire de travail actuel, vous pouvez utiliser la commande suivante :

$ find -type f | vidir -

Vous souhaitez modifier un type de fichier spécifique, par exemple des fichiers .PNG ? alors vous utiliseriez :

$ vidir *.png

Cette commande édite uniquement les fichiers .png du répertoire courant.

L'utilitaire "Vipe"

La commande "vipe" vous permet d'exécuter votre éditeur par défaut au milieu d'un pipeline Unix et de modifier les données transmises entre les programmes.

La commande suivante ouvre l'éditeur vi (éditeur par défaut, bien sûr) et vous permet de modifier l'entrée de la commande "echo" (c'est-à-dire Welcome To OSTechNix) et affiche le résultat final.

$ echo "Welcome to OSTechNIx" | vipe
Hello World

Comme vous le voyez dans la sortie ci-dessus, j'ai passé l'entrée "Welcome to OSTechNix" à l'éditeur vi et je les ai éditées comme "Hello World" et j'ai affiché la sortie finale.

Téléchargement recommandé - Ebook gratuit :"Apprenez Linux en 5 jours"

Et, c'est tout pour le moment. Je n'ai couvert que quelques utilitaires. Le "moreutils" a des utilitaires plus utiles. J'ai déjà mentionné les utilitaires actuellement inclus dans le paquet moreutils dans la section d'introduction. Vous pouvez lire les pages de manuel pour plus de détails sur les commandes ci-dessus. Dites par exemple, pour en savoir plus sur la commande "vidir", exécutez :

$ man vidir

J'espère que cela vous aidera.


Linux
  1. Rendez l'historique de Bash plus utile avec ces conseils

  2. Linux – Linux est-il un Unix ?

  3. 10 exemples Sar (Sysstat) utiles pour la surveillance des performances UNIX / Linux

  4. Suivre le temps que prend une commande sous UNIX/LINUX ?

  5. moins est plus? Est-ce que plus c'est moins ? Je suis si confus

Téléavertisseurs de terminaux

50 commandes de coupe Linux simples et utiles sous Unix avec des exemples

Zorin OS 15 plus beau et utile que jamais

Commande mkdir sous Linux/Unix

Linux contre Unix

Commande Grep sous Linux/UNIX