Utilisation de la commande diff

Bon voilà je veux écrire un script qui lance un signal sonore si deux fichiers textes sont différents. Après une petite recherche je me suis aperçue que la commande diff permet de comparer deux fichiers ligne par ligne.
Je me demande donc si c'est possible d'utiliser cette commande dans mon script.
Merci pour vos réponses

2 réponses

  1. Contributeur
    Salut,

    Avant toutes choses, man diff ;-))

    Sinon, la commande diff sans paramètre ne renvoie rien si 2 fichiers sont identiques avec un code retour ($?) de "0", et renvoie les différences si elles existent avec un code retour ($?) de "1". A partir de là il est très facile de tester ce code retour et de lancer un bip sonore en cas d'inégalité...
    0
    1. Bonjour
      oui effectivement c'est ce que j'ai remarqué quand j'ai fait le test de la valeur de ($?)
      J'ai quand même deux questions :
      est ce que c'est possbile d'utiliser la fonction diff pour afficher les lignes où il y a des différences entre les deux fichiers ??
      comment faire pour "programmer" le bip sonore (une commande particulière ...)
      Merci pour votre aide
      0
      1. Contributeur
        est ce que c'est possbile d'utiliser la fonction diff pour afficher les lignes où il y a des différences entre les deux fichiers ??
        $ cat A
        un
        deux
        trois
        quatre
        cinq
        $ cat C
        un
        deux
        troi
        quatre
        cinq
        $ diff A C
        3c3
        < trois
        ---
        > troi
        $


        comment faire pour "programmer" le bip sonore (une commande particulière ...)
        Si un bip sonore te suffit, un simple echo -e "\a" devrait suffire, sinon tu peux lire un fichier "wav" (ou autre) avec "play" ou "aplay"...
        0
      2. Merci pour la réponse :)
        Toutefois j'avoue que j'ai un problème au niveau de la comparaison. Voilà le résultat que me sort la commande diff :(
        2,19c2,19
        < Remote control interface initialized. Type 'help' for help.
        < > > +----[ Stream 0 ]
        < |
        < | Codec: H264 - MPEG-4 AVC (part 10) (avc1)
        < | Type: Video
        < | Frame rate: 25
        < | Resolution: 640x480
        < |
        < +----[ Stream 1 ]
        < |
        < | Sample rate: 44100 Hz
        < | Type: Audio
        < | Codec: MPEG AAC Audio (mp4a)
        < | Channels: Stereo
        < |
        < +----[ end of stream info ]
        < > Shutting down.Bye-bye!
        < > 
        \ No newline at end of file
        ---
        > Remote control interface initialized. Type 'help' for help.
        > > > +----[ Stream 0 ]
        > |
        > | Codec: H264 - MPEG-4 AVC (part 10) (avc1)
        > | Type: Video
        > | Frame rate: 25
        > | Resolution: 640x480
        > |
        > +----[ Stream 1 ]
        > |
        > | Sample rate: 44100 Hz
        > | Type: Audio
        > | Codec: MPEG AAC Audio (mp4a)
        > | Channels: Stereo
        > |
        > +----[ end of stream info ]
        > > Shutting down.Bye-bye!
        > > 
        

        Personnellement je ne vois pas où est le problème dans mes deux fichiers qui semblent authentiques. Si vous pouvez m'aider pour comprendre cette sortie
        0
      3. Contributeur
        Affiches la sortie de :
        cat -A fichier1
        cat -A fichier2
        0
      4. alors là j'avoue que c'est un peu bizarre :s
        Quand j'ouvre le fichier output avec un éditeur de fichier voilà ce qu'il m'affiche :
        VLC media player 1.1.4 The Luggage
        Remote control interface initialized. Type 'help' for help.

        > > +----[ Stream 0 ]

        |

        | Codec: H264 - MPEG-4 AVC (part 10) (avc1)

        | Type: Video

        | Frame rate: 25

        | Resolution: 640x480

        |

        +----[ Stream 1 ]

        |

        | Sample rate: 44100 Hz

        | Type: Audio

        | Codec: MPEG AAC Audio (mp4a)

        | Channels: Stereo

        |

        +----[ end of stream info ]

        > Shutting down.Bye-bye!

        >

        Maintenant quand je fais la commande que tu m'as donnée :
        voilà ce qu'il m'affiche :

        VLC media player 1.1.4 The Luggage$ 
        Remote control interface initialized. Type 'help' for help.^M$ 
        > > Shutting down.Bye-bye!^M$ 
        

        Là j'avoue que je n'y comprends rien, surtout que j'ai actualisé l'affichage de l'éditeur du texte

        Edit: Pour le fichier test voilà la sortie que je reçois :
        Remote control interface initialized. Type 'help' for help.$
        > > +----[ Stream 0 ]$
        |$
        | Codec: H264 - MPEG-4 AVC (part 10) (avc1)$
        | Type: Video$
        | Frame rate: 25$
        | Resolution: 640x480$
        |$
        +----[ Stream 1 ]$
        |$
        | Sample rate: 44100 Hz$
        | Type: Audio$
        | Codec: MPEG AAC Audio (mp4a)$
        | Channels: Stereo$
        |$
        +----[ end of stream info ]$
        > Shutting down.Bye-bye!$
        > fdf$
        

        Et ce que m'affiche l'éditeur de texte :
        VLC media player 1.1.4 The Luggage
        Remote control interface initialized. Type 'help' for help.
        > > +----[ Stream 0 ]
        |
        | Codec: H264 - MPEG-4 AVC (part 10) (avc1)
        | Type: Video
        | Frame rate: 25
        | Resolution: 640x480
        |
        +----[ Stream 1 ]
        |
        | Sample rate: 44100 Hz
        | Type: Audio
        | Codec: MPEG AAC Audio (mp4a)
        | Channels: Stereo
        |
        +----[ end of stream info ]
        > Shutting down.Bye-bye!
        >
        (il y a pa de fdf à la fin)
        0
      5. Contributeur
        Je t'ai demandé pour les 2 fichiers ;-((

        VLC media player 1.1.4 The Luggage$
        Remote control interface initialized. Type 'help' for help.^M$
        > > Shutting down.Bye-bye!^M$

        le "$" (signe dollar) seul à la fin c'est la marque de fin de ligne sous Unix (\n), par contre un "^M$" c'est la marque d'un retour chariot suivi d'une fin de ligne (\r\n) que l'on trouve sous Windows ;-(

        D'où ma demande concernant les 2 fichiers ;-\

        Est-ce que ces 2 fichiers proviennent du même endroit (PC) ?
        0