Dans cet article, nous passerons en revue un certain nombre d'outils de ligne de commande qui agissent comme des filtres sous Linux. Un filtre est un programme qui lit l'entrée standard, effectue une opération dessus et écrit les résultats sur la sortie standard.
Pour cette raison, il peut être utilisé pour traiter des informations de manière puissante, comme la restructuration de la sortie pour générer des rapports utiles, la modification de texte dans des fichiers et de nombreuses autres tâches d'administration système.
Cela dit, voici quelques-uns des filtres de fichiers ou de texte utiles sous Linux.
1. Awk Commande
Mauvais est un remarquable langage d'analyse et de traitement de modèles, il peut être utilisé pour créer des filtres utiles sous Linux. Vous pouvez commencer à l'utiliser en lisant notre série Awk de la partie 1 à la partie 13.
De plus, lisez également le awk page de manuel pour plus d'informations et d'options d'utilisation :
$ man awk
2. Commande Sed
sed est un puissant éditeur de flux pour filtrer et transformer du texte. Nous avons déjà écrit deux articles utiles sur sed, que vous pouvez parcourir ici :
- Comment utiliser la commande GNU "sed" pour créer, modifier et manipuler des fichiers sous Linux
- 15 trucs et astuces utiles pour la commande "sed" pour les tâches quotidiennes d'administration du système Linux
La page de manuel sed a ajouté des options de contrôle et des instructions :
$ man sed
3. Commandes Grep, Egrep, Fgrep, Rgrep
Ces filtres produisent des lignes correspondant à un motif donné. Ils lisent les lignes d'un fichier ou d'une entrée standard et impriment toutes les lignes correspondantes par défaut sur la sortie standard.
Remarque :Le programme principal est grep, les variations sont simplement les mêmes que l'utilisation d'options grep spécifiques comme ci-dessous (et elles sont toujours utilisées pour la compatibilité descendante) :
$ egrep = grep -E $ fgrep = grep -F $ rgrep = grep -r
Voici quelques commandes grep de base :
[email protected] ~ $ grep "aaronkilik" /etc/passwd aaronkilik:x:1001:1001::/home/aaronkilik: [email protected] ~ $ cat /etc/passwd | grep "aronkilik" aaronkilik:x:1001:1001::/home/aaronkilik:
Vous pouvez en savoir plus sur Quelle est la différence entre Grep, Egrep et Fgrep sous Linux ?.
4. commande principale
tête est utilisé pour afficher les premières parties d'un fichier, il affiche les 10 premiers lignes par défaut. Vous pouvez utiliser le -n
num flag pour spécifier le nombre de lignes à afficher :
[email protected] ~ $ head /var/log/auth.log Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0) Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0) Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0) Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0) Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root Jan 2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0) [email protected] ~ $ head -n 5 /var/log/auth.log Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0) Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0) Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Apprenez à utiliser la commande head avec les commandes tail et cat pour une utilisation efficace sous Linux.
5. Commande queue
queue sort les dernières parties (10 lignes par défaut) d'un fichier. Utilisez le -n
commutateur num pour spécifier le nombre de lignes à afficher.
La commande ci-dessous affichera les 5 derniers lignes du fichier spécifié :
[email protected] ~ $ tail -n 5 /var/log/auth.log Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22. Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
De plus, queue a une option spéciale -f
pour surveiller les modifications d'un fichier en temps réel (en particulier les fichiers journaux).
La commande suivante vous permettra de surveiller les modifications dans le fichier spécifié :
[email protected] ~ $ tail -f /var/log/auth.log Jan 6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22. Jan 6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting. Jan 6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. Jan 6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22. Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22. Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22. Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Lisez la queue page de manuel pour une liste complète des options d'utilisation et des instructions :
$ man tail
6. Commande de tri
trier permet de trier les lignes d'un fichier texte ou de l'entrée standard.
Ci-dessous le contenu d'un fichier nommé domains.list :
[email protected] ~ $ cat domains.list tecmint.com tecmint.com news.tecmint.com news.tecmint.com linuxsay.com linuxsay.com windowsmint.com windowsmint.com
Vous pouvez exécuter une simple commande de tri pour trier le contenu du fichier comme suit :
[email protected] ~ $ sort domains.list linuxsay.com linuxsay.com news.tecmint.com news.tecmint.com tecmint.com tecmint.com windowsmint.com windowsmint.com
Vous pouvez utiliser le tri commande à bien des égards, parcourez certains des articles utiles sur la commande de tri comme suit :
- 14 exemples utiles de la commande "sort" de Linux – Partie 1
- 7 exemples intéressants de commandes de tri Linux – Partie 2
- Comment rechercher et trier des fichiers en fonction de la date et de l'heure de modification
- Comment trier la sortie de la commande "ls" par date et heure de dernière modification
7. Commande unique
unique est utilisée pour signaler ou omettre les lignes répétées, elle filtre les lignes de l'entrée standard et écrit le résultat sur la sortie standard.
Après avoir exécuté sort sur un flux d'entrée, vous pouvez supprimer les lignes répétées avec uniq comme dans l'exemple ci-dessous.
Pour indiquer le nombre d'occurrences d'une ligne, utilisez le -c
option et ignorer les différences de casse lors de la comparaison en incluant le -i
choix :
[email protected] ~ $ cat domains.list tecmint.com tecmint.com news.tecmint.com news.tecmint.com linuxsay.com linuxsay.com windowsmint.com [email protected] ~ $ sort domains.list | uniq -c 2 linuxsay.com 2 news.tecmint.com 2 tecmint.com 1 windowsmint.com
Lisez le uniq page de manuel pour plus d'informations sur l'utilisation et les drapeaux :
$ man uniq
8. Commande fmt
fmt simple formateur de texte optimal, il reformate les paragraphes dans le fichier spécifié et imprime les résultats sur la sortie standard.
Voici le contenu extrait du fichier domain-list.txt :
1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com
Pour reformater le contenu ci-dessus en une liste standard, exécutez la commande suivante avec -w
switch est utilisé pour définir la largeur de ligne maximale :
tecmint[email protected] ~ $ cat domain-list.txt 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com [email protected] ~ $ fmt -w 1 domain-list.txt 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com
9. Commande pr
pr La commande convertit les fichiers texte ou l'entrée standard pour l'impression. Par exemple sur Debian systèmes, vous pouvez répertorier tous les packages installés comme suit :
$ dpkg -l
Pour organiser la liste en pages et colonnes prêtes à être imprimées, lancez la commande suivante.
[email protected] ~ $ dpkg -l | pr --columns 3 -l 20 2017-01-06 13:19 Page 1 Desired=Unknown/Install ii adduser ii apg | Status=Not/Inst/Conf- ii adwaita-icon-theme ii app-install-data |/ Err?=(none)/Reinst-r ii adwaita-icon-theme- ii apparmor ||/ Name ii alsa-base ii apt +++-=================== ii alsa-utils ii apt-clone ii accountsservice ii anacron ii apt-transport-https ii acl ii apache2 ii apt-utils ii acpi-support ii apache2-bin ii apt-xapian-index ii acpid ii apache2-data ii aptdaemon ii add-apt-key ii apache2-utils ii aptdaemon-data 2017-01-06 13:19 Page 2 ii aptitude ii avahi-daemon ii bind9-host ii aptitude-common ii avahi-utils ii binfmt-support ii apturl ii aview ii binutils ii apturl-common ii banshee ii bison ii archdetect-deb ii baobab ii blt ii aspell ii base-files ii blueberry ii aspell-en ii base-passwd ii bluetooth ii at-spi2-core ii bash ii bluez ii attr ii bash-completion ii bluez-cups ii avahi-autoipd ii bc ii bluez-obexd .....
Les drapeaux utilisés ici sont :
--column
définit le nombre de colonnes créées dans la sortie.-l
spécifie la longueur de la page (la valeur par défaut est de 66 lignes).
10. Commande tr
Cet outil traduit ou supprime des caractères de l'entrée standard et écrit les résultats sur la sortie standard.
La syntaxe pour utiliser tr est le suivant :
$ tr options set1 set2
Jetez un oeil aux exemples ci-dessous, dans la première commande, set1( [:upper:] )
représente la casse des caractères saisis (tous en majuscules).
Alors set2([:lower:])
représente le cas dans lequel les caractères résultants seront. C'est la même chose dans le deuxième exemple et la séquence d'échappement \n
signifie une sortie d'impression sur une nouvelle ligne :
[email protected] ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:] www.tecmint.com [email protected] ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:] NEWS.TECMINT.COM
11. plus de commande
plus La commande est un filtre de lecture de fichiers utile créé essentiellement pour la visualisation des certificats. Il affiche le contenu du fichier dans un format de type page, où les utilisateurs peuvent appuyer sur [Entrée] pour afficher plus d'informations.
Vous pouvez l'utiliser pour afficher des fichiers volumineux comme ceci :
[email protected] ~ $ dmesg | more [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 4.4.0-21-generic ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 4.4.6) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 [ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers' [ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format. [ 0.000000] x86/fpu: Using 'eager' FPU context switches. [ 0.000000] e820: BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable [ 0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable [ 0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable --More--
12. moins de commande
moins est le contraire de plus commande ci-dessus mais elle offre des fonctionnalités supplémentaires et c'est un peu plus rapide avec des fichiers volumineux.
Utilisez-le de la même manière que more :
[email protected] ~ $ dmesg | less [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 4.4.0-21-generic ([email protected]) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 4.4.6) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 [ 0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers' [ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format. [ 0.000000] x86/fpu: Using 'eager' FPU context switches. [ 0.000000] e820: BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable [ 0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable [ 0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved [ 0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable :
Découvrez pourquoi la commande "moins" est plus rapide que la commande "plus" pour une navigation efficace dans les fichiers sous Linux.
C'est tout pour le moment, faites-nous part de tous les outils de ligne de commande utiles non mentionnés ici, qui agissent comme des filtres de texte sous Linux via la section des commentaires ci-dessous.