Points Repères :

LINUX :

Installation-Administration- Sécurité

 

Programmes Utilitaires et Filtres

 

 

Auteur : Armand PASSELAC-ESTRADA

 

Mise à jour :  21/12/01

 

·                     1         Table des Matières

 

1      Recherche de lignes.. 2

1.1   La commande grep. 2

2      Tri par lignes.. 4

2.1   La commande sort.. 4

3      Visualiser le texte. 5

3.1   Visualisation du contenu d'un fichier page par page : more. 5

3.2   Visualisation de la fin du fichier : tail. 5

3.3   Visualisation complète de fichier en mode lecture seule : view... 6

3.4   Concaténation et visualisation de fichiers sur la sortie standard : cat.. 6

4      Comparer des fichiers.. 7

4.1    diff. 8

4.2   cmp. 9

5      Imprimer un fichier.. 9

5.1   Imprimer avec la commande lp. 9

5.2    La commande pr.. 10

5.3   S'enquérir de l'état des demandes d'impression.. 11

5.4   Arrêter une requête d'impression.. 12

 

 

 

 

 

 

 

2         Recherche de lignes

 

o                         2.1      La commande grep

 

Syntaxe :         grep [options] ''modèle de critère'' [(path) nom du fichier]

            => recherche le(s) caractère(s) selon le modèle de critère dans le fichier mentionné.

 

Options :

                        -v : Affiche toutes les lignes ne comportant pas le modèle de caractères.

                        -c : (count) Retour uniquement le nombre de lignes trouvées, mais sans les afficher.

                        -i : (ignore) Ignore la casse (majuscules/minuscules)

                        -n : (numbering) Chaque ligne trouvée est présentée avec son numéro de ligne.

                        -l : (list files only) Ne sont affichés que les noms de fichiers contenant, dans une de leur ligne, le critère recherché. Les lignes elles-mêmes ne sont pas présentées.

 

            Modèles de critères :

 

                        ^c : Ligne commençant par la plage de caractère c.

                        . : Un caractère quelconque.

                        * : Signe de répétition.

                        $ : Recherche en fin de ligne.                      

                       

Exemples :

 

1) Recherche du mot « toto » dans le fichier nom.txt

                        grep "toto" ./Tests/nom.txt

 

                        2) Rechercher un processus

                        Note : les expressions suivantes sont possibles :

                        ps -x | grep xmms

                        ps -x | grep ''xmms''

                        ps -x | grep 'xmms'

 

                        3) Vérifier les processus non mis en commentaires dans  /etc/inetd.conf :

                        grep -v "^#" /etc/inetd.conf

           

                        4) Afficher la liste des fichiers contenant la chaîne de caratères ''to'' :      

                        find /home/kmaster/DOCS/ -name "*" -exec grep -l "to*" {} \;

 

5) Rechercher les fichiers nommés mot?.txt (ou ? Remplace un caractère quelconque) et contenant la chaîne de caractère toto :

                        find . -name 'mot?.txt' -exec grep -l "toto" {} \;  

 

6) Rechercher une chaîne de caractères se trouvant sur un fichier sur l'ensemble du disque dur:

find / -name '*' | xargs grep -l chaine_recherchee

                        ATTENTION ce sont des simples quottes !!

 

                        7) Vérifier si le package apache est installé et demande des informations sur le package xfree (A VERIFIER !!!)

                        rpm -qa | grep "apache"

                        rpm -qa | grep -i xfree

 

                        8) Chercher un mot clef dans les fichiers de logs :

                        grep mots-cles /var/log/messages

 

                        9) Vérifier qu'une librairie est installée :

                        ldconfig -v | grep lalib

 

 

3         Tri par lignes

 

o                         3.1      La commande sort

 

Cette commande effectue un tri par lignes, en ordre croissant.

 

Syntaxe :                    sort [options] [+Pos1 [-Pos2] ...] [Fichier...]

 

Les options +Pos1 et -Pos2 vous permettent de sélectionner les champs à utiliser comme critères de tri.

Ainsi la commande suivante :

                        sort +1 -2 MonFichier.txt

            va effectuer le tri sur le 2 ième champ de caractères présent dans MonFichier.txt

 

 

Options :

                        -d : Définit ce qu'on appelle un tri-dictionnaire.

                        -n : Tri numérique.

                        -b : Ignore les espaces placés en début de champ.

                        -f : Aucune distinction n'est faite entre majuscules et minuscules.

                        -r : Inversion de l'ordre du tri, donc tri décroissant.

                        -tc : Le caractère c est défini comme caractère de séparation entre les champs d'une ligne.

 

Exemples :

 

            $ cat SortTest.txt

                        B         2          titi

                        A          1          toto

                        C         3          tata

                       

            1) On trie par ordre alphabétique sur la 3 ième colonne :

                       

                        $ sort -d +2 -3 SortTest.txt

                                   C         3          tata

                                   B         2          titi

                                   A          1          toto

 

            2) On trie par valeur numérique sur le 2ième champ :

 

 

                        $ sort -n +1 -2 SortTest.txt

 

                                   A          1          toto

                                   B         2          titi

                                   C         3          tata                 

           

            3) Liste les packages par ordre alphabétique :

                        $ rpm -qa | sort 

 

            4) Affiche les fichiers classés par ordre alphabétique :

                        $ ls | sort

 

            5) Pour connaître les valeurs uniques d'un ensemble numérique de résultats

 

                        $ cat SortTest2.txt

                                   1

                                   2

                                   2

                                   3

                                   4

                                   4

 

                        $ sort -n SortTest2.txt | uniq

                                   1

                                   2

                                   3

                                   4

 

 

4           Visualiser le texte

 

o                         4.1      Visualisation du contenu d'un fichier page par page : more

 

Syntaxe :         more [options] [(path) nom du fichier]

 

Les commandes une fois le fichier affiché :

[Entrer] : visualiser une ligne supplémentaire

[Espace] : visualiser 24 lignes supplémentaires

[b] : remonter dans le texte

[q] : quitter more

 

Exemples :

           

            1) Visualiser la liste des fichiers :

                        ls | more

 

            2) Afficher page par page un fichier :

                        more /etc/passwd

 

o                         4.2      Visualisation de la fin du fichier : tail

 

La commande tail affiche la dernière partie d'un fichier.

 

Syntaxe :                    tail [-Chiffre] [Fichier ...]

 

L'indication Chiffre derrière le - définit le nombre de lignes à présenter.

Attention, une  particularité de la commande tail est l'option -f. Par défaut, avec cette option, il y a affichage des 10 dernières lignes du fichier spécifié, puis une vérification des nouvelles entrées dans ce fichier. En d'autres termes, la commande tail attend alors toujours de nouvelles données. Pour reprendre la main et interrompre son traitement il vous faudra l'arrêter explicitement (CTRL C).

 

 

Exemple :

 

            1)Afficher les 5 dernières lignes du fichier /var/log/boot.log :

            # tail -5 /var/log/boot.log

                        Sep 20 14:25:45 kmaster keytable: Loading system font:

                        Sep 20 14:25:45 kmaster rc: Starting keytable:  succeeded

                        Sep 20 14:25:45 kmaster gpm: gpm startup succeeded

                        Sep 20 14:25:46 kmaster crond: crond startup succeeded

                        Sep 20 14:25:48 kmaster xfs: xfs startup succeeded

 

            2) Affiche les message en dynamique (pour reprendre la main : CTRL C)

            # tail -f  log.2001.07.19

 

            3)Affiche les messages en dynamique (seulement les 200 dernières lignes)

            # tail -200f  log.2001.07.19

 

 

 

o                         4.3      Visualisation complète de fichier en mode lecture seule : view

 

view log.2001.07.19  = vi en mode read only

 

 

 

 

o                         4.4      Concaténation et visualisation de fichiers sur la sortie standard : cat

 

Syntaxe :                    cat [-s] [Fichier ...]

 

Options :

                        Le nom de fichier - comme paramètre indique le canal d'entrée standard.

                        L'option -s masque les messages d'erreur qui apparaissent si un fichier à lire n'existe pas.

 

Cette commande lit le contenu du ou des fichiers spécifiés comme paramètres et renvoie ce contenu par le canal de sortie standard. Si aucun fichier n'est indiqué, elle lit à partir du canal d'entrée standard.

 

Exemples :

            1)Affichage du contenu d'un fichier (ici le fichier de référence ment des DNS à consulter) :

            cat /etc/resolv.conf

 

            2)Réunion de 2 fichiers :

            $ cat Fic1.txt

                        toto

                        titi

                        tata

 

            $ cat Fic2.txt

                        bobo

                        bibi

                        baba

 

            $ cat Fic1.txt Fic2.txt > Reunion.txt

            $ cat Reunion.txt

                        toto

                        titi

                        tata

                        bobo

                        bibi

                        baba

 

 

            3)Lecture de deux fichiers + du canal d'entrée standard, puis enregistrement dans un troisième fichier :

            $ cat Fic1.txt

                        Bonjour

 

            $ cat Fic2.txt

                        François

 

            $ cat Fic1.txt Fic2.txt - > Welcome.txt

                        comment tu vas ?

                        [CTRL C]

 

            $ cat Welcome.txt

                        Bonjour

                        François

                        comment tu vas ?

 

 

            4)Dirige un fichier directement sur l'imprimante :

            cat [nom fichier].txt > /dev/lp0

 

           

5         Comparer des fichiers

 

o                         5.1      diff

 

Syntaxe :                    diff [options] Fichier1 Fichier2

 

Le résultat de la comparaison des deux fichiers engendre des messages ayant pour but de décrire les modifications à apporter au PREMIER fichier pour qu'il devienne identique au DEUXIEME fichier.

 

            Options :

                        -b : La comparaison des lignes ne tient pas compte des espaces.

                        -B : Ne  pas tenir compte des différences qui concernent des lignes blanches.

 

Exemples :

 

            1) Ligne à changer (message c, comme change)

            $ cat Fic1.txt

                        Philippe

                        François

            $ cat Fic2.txt

                        Philippe

                        Olivier

            $ diff Fic1.txt Fic2.txt

                        2c2

                        < François

                        ---

                        > Olivier

 

            Explications :

                        2c2 : indique que les modifications concernent la ligne 2 de chaque fichier.

                        < : indique la modification à apporter aux lignes du PREMIER fichier.

                        > : indique les lignes à modifier dans le SECOND fichier.

 

            2)Suppression de ligne (message d, comme delete) :

 

            $ cat Fic1.txt

                        Philippe

                        François

                        zebulon

            $ cat Fic2.txt

                        Philippe

                        François

            $ diff Fic1.txt Fic2.txt

                        3d2

                        < zebulon

 

            Explications :

                        3c2 : indique que la 3ème ligne du premier fichier n'existe pas après la 2ème ligne du deuxième fichier, il faut donc la détruire.

                        < : indique la modification à apporter aux lignes du PREMIER fichier.

 

            3)Echange de lignes (message a, comme append) :

            $ cat Fic1.txt

                        Philippe

                        François

                        Alain

            $ cat Fic2.txt

                        Philippe

                        Alain

                        François

            $ diff Fic1.txt Fic2.txt

                        2d1

                        < François

                        3a3

                        > François

 

 

o                         5.2      cmp

Pas encore rédigé...

 

 

 

6         Imprimer un fichier

 

Vous disposez de la commande lp (en anglais line printer, « imprimante ligne »).

Cette commande n'est pas un programme de filtre, puisqu'elle ne transmet pas de données par le canal de sortie standard. Elle ne peut donc pas opérer à la fin d'un pipe. Mais elle est le plus souvent associée à un pipe.

 

La commande lp n'imprime pas elle-même. Elle est une demande d'impression transmise à un couple de programmes, lpd (line printer daemon) et lpr (line printer request). Le programme lpr attend les requêtes d'impression et les transmet ensuite à l'imprimante.

 

Cette procédure est indispensable du fait des caractéristiques multi-utilisateurs de LINUX.

Théoriquement, plusieurs utilisateurs peuvent imprimer simultanément. Si tous les utilisateurs accédaient directement à l'imprimante, celle-ci ne saurait pas par qui commencer.

 

Il est donc nécessaire de canaliser les demandes d'impression et de les regrouper sous forme de paquets. Les demandes individuelles sont donc rangées dans une file d'attente (queue) qui fonctionne selon le modèle FIFO (First In, First Out). Le programme lpq (line printer queue) examine le répertoire de spool ( /var/spool/ ) utilisé par lpd pour imprimer  les  fichiers  sur  l'imprimante  en  ligne,  et retourne  l'état  des  jobs  spécifiés ou de tous les jobs associés à un utilisateur.

A chaque imprimante connectée au système correspond une file d'attente indépendante.

 

o                         6.1      Imprimer avec la commande lp

 

La commande lp lit les données soit par le canal d'entrée standard soit dans un fichier, si ce dernier apparaît comme paramètre de la commande.

 

Syntaxe :                    lp [options] [Fichier ...]

 

Options :

                        -d imprimate : Les gros systèmes gèrent souvent plusieurs imprimantes. Dans ce cas, sans indication de cette option, l'impression a lieu sur l'imprimante par défaut. Pour sortir sur une autre imprimante, il faut utiliser cette option suivie du nom de l'imprimante. Ce nom étant référencer dans les variables  PRINTER,  LPDEST, NPRINTER, NGPRINTER et dans le fichier /etc/printcap.

                        -n Chiffre : Imprime plusieurs fois un document (le nombre de copie = Chiffre).

                        -c : Une copie du fichier est faite avant de l'imprimer. Ceci n'a aucun effet si vous utiliser le gestionnaire d'impression LPRng).

 

 

Pour chaque demande d'impression générée par la commande lp est créé un numéro de requête (request id). Ce numéro identifie la requête. Elle est composée du nom de l'imprimante et d'un numéro d'ordre.

 

            1)Impression basique :

            $ lp test-lp.txt

                        request id is kmaster@seveur+295

 

            2)Obtenir une impression de la liste triée des utilisateurs connectés :

            $ who | sort | lp -n 1

                        request id is kmaster@seveur+450

 

            3)Dirige un fichier directement sur l'imprimante :

            # cat /home/kmaster/TESTS/test-lp.txt > /dev/lp0

 

 

o                         6.2      La commande pr

 

Commande de formatage de données et de fichiers.

Syntaxe :                    pr [options] [Fichier(s)]

 

Cette commande permet de formater de manière simple un fichier et de le préparer ainsi pour une impression. La commande pr lit soit dans un ou plusieurs fichiers, soit par le canal d'entrée standard.

La sortie formatée passe par le canal de sortie standard.

 

            Options :

                        -Chiffre : Affichage du texte en plusieurs colonnes. Chiffre définit le nombre de lignes.

                        -wChiffre : Le chiffre derrière -w (width) indique le nombre de caractères par lignes (par défaut 72).

                        -lChiffre : Le chiffre derrière -l (length) définit le nombre de lignes par page (par défaut : 66).

                        -hTexte : Le Texte doit remplacer le nom du fichier dans l'en-tête de chaque page.

                        -oChiffre : Le chiffre derrière -o (offset) définit le nombre de caractères de retrait à gauche.

                        -n : Numérote les lignes.

 

Exemples :

            1) Formatage simple d'un fichier :

            $ cat test-lp.txt

                        toto

                        tata

                        titi

 

            $ pr -n test-lp.txt | more

                        2001-09-21 14:30                  test-lp.txt                  Page    1

 

                            1      toto

                            2      tata

                            3      titi

                            4     

 

            2)Formatage puis impression :

            $ pr -n test-lp.txt | lp

                        request id is kmaster@seveur+373 

 

 

           

o                         6.3      S'enquérir de l'état des demandes d'impression

 

Après l'envoi de la commande d'impression, vous cherchez parfois à savoir où cette demande figure dans la file d'attente. La commande lpstat (line printer status) vous livre ces informations.

Cette commande affiche de base toutes les demandes d'impression de l'utilisateur.

 

            Options :

                        -t : (total) affiche un état complet sur le statut du système de spool.

                        -uNom : (user) ne présente que les requêtes d'impression de l'utilisateur spécifié.

                        -v : affiche une liste des imprimantes disponibles et indique pour chacune le nom du fichier gestionnaire.

 

                       

Exemple :

 

            $ lp test-lp.txt

                        request id is kmaster@seveur+601

            $ lpstat -t

                        scheduler is running

                        system default destination: lp

                        printer lp unknown state. enabled since Sep 21 15:28 2001. available

                        Printer: lp@seveur

                        Queue: 1 printable job

                        Server: pid 1602 active

                        Unspooler: pid 1603 active

                        Status: processing 'dfA601seveur.orbytes.fr', size 226, format 'f', IF filter '

                        filter' at 15:28:13.614

                        Rank   Owner/ID                  Class Job Files                 Size Time

                        active kmaster@seveur+601           A   601 test-lp.txt            226 15:28:13

 

 

 

o                         6.4      Arrêter une requête d'impression

 

Lorsque vous aurez envoyé votre requête d'impression à l'imprimante et que vous vous serez renseigné sur sa position dans la file d'attente, vous trouverez peut être que le fichier n'est pas encore parfait et qu'il contient encore des erreurs. Il s'agit alors d'arrêter la requête d'impression avant qu'elle ne s 'exécute effectivement. Utiliser à cet effet la commande cancel.

 

Cette commande peut être complétée par deux types de paramètres : le numéro de la requête d'impression à arrêter ou le nom de l'imprimante. L'indication d'un numéro de requête supprime cette demande de la file d'attente. L'indication du nom de l'imprimante comme paramètre fait référence à la requête d'impression en cours.