[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Script pratique



Ci dessous un petit script pratique (mais lent) pour lister les "paquets
+ versions" (ligne de "dpkg -l" en fait) utiles au fonctionnement des
exécutables d'un repertoire entier. Ca doit être pratique pour fabriquer
un package (c'est pour cela que je l'ai fait). Maintenant que le script
marche, j'imagine qu'il existe une commande adéquate déjà existante.
___________________________________
fichier /usr/local/bin/lsdepend (qui fait le boulot):

#!/bin/sh
ls -l  | grep "^-rwx" | sed -e '1,$s/^[-a-z0-9 A-Z:àéèçù.]\{0,55\}/ldd
/' | sh 2> /dev/null | sed -e '1,$s/=.*//' | sed -e '1,$s/^ */dpkg -S /'
> /tmp/__lsdepend
#fin de la premiere ligne
rmdoublons /tmp/__lsdepend /tmp/__lsdepssdoub
sh /tmp/__lsdepssdoub | sed -e '1,$s/:.*//' > /tmp/__lsdepfin
rmdoublons /tmp/__lsdepfin /tmp/__lsdepresultat
# debut de la cinquieme ligne
cat /tmp/__lsdepresultat | sed -e '1,$s/^/dpkg -l | grep
"^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ "/' |sh
#fin de la cinquieme ligne
____________________________________
fichier /usr/local/bin/rmdoublons (enleve les lignes identiques du
fichier $1, resultat dans $2):

#!/usr/bin/perl
open(SORTIE , ">$ARGV[1]");
#print "Ouverture de $ARGV[1] en sortie\n";
open(ENTREE , $ARGV[0]);
#print "Ouverture de $ARGV[0] en entree\n";
@liste=();
while($ligne=<ENTREE>)
{
#    print "Etude de $ligne\n";
    $d=0;
    foreach $_ (@liste) {
        if ($ligne eq $_) {$d=1};
    }
    if ($d == 0) {
        @liste = (@liste,$ligne);
        print SORTIE $ligne;
 };
}
close(SORTIE);
close(ENTREE);
_________________________________
Voilà, j'ignore si ça peut vous aider mais ça reste un bel exercice
d'utilisation du shell et de sed!

François BOISSON


Reply to: