Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/06/2011, à 12:14

AnsuzPeorth

[dicsh] Un dictionnaire python's like pour *sh

Bjr,
dicsh est une petite application pour simuler un dictionnaire python pour les scripts *sh.

La gestion de données en bash est assez limité, un tel dictionnaire sera bien utile. Certes, ce n'est pas ce qu'il y a de plus rapide (mais c'est plus que raisonnable), de toute façons, en général, les script bash ne sont pas prévus pour être rapides !

Pour l'instant, juste des clés reliées à une liste de valeurs (clé => valeur), mais je pense en faire un autre, ddicsh, qui sera un dictionnaire de dictionnaire (clé => clé => valeur).

C'est  un premier jet, ça sera optimisé selon retours et tests.

Deux exemples sont dans l'archive, à lancer en console:
- carnet.sh => gestion d'un carnet d'adresses (le minimum, juste pour exemple)
- test_stdin => exemple d'utilisation de l'option --stdin

Bien sur, cette appli peut être installer dans bin pour ne pas devoir lancer la commande ./dicsh.py.

http://gwebradio2.googlecode.com/files/dicsh.0.1.tar.gz

Votre avis m'intéresse big_smile

thx.

man:

 DICSH est un simili dictionnaire python pour script *sh. Les données sont
 stockées dans un fichier sérialisé via cPickle.
 
 Les données sont stockés sous la forme key:value, ou value est une liste.
 On accède à la liste par un indice qui commence à 0.
   key : [ value , valule , value, ... ] 
   key : [ value , valule , value, ... ]
 
 Les options sans arguments sont à passer en dernier.
 
    -f / --file=
              Le nom ou path sans extension du dictionnaire.
              Si juste le nom est indiqué, il sera créer avec le path actuel.
              
    -k / --key=
              Clé du dictionnaire.
  
    -v / --value=
              Valeur de la clé.
  
    -i / --indice=
              Indice de la valeur de la clé choisi.
  
    -d / --delete
              Supprime une clé ou une valeur.
  
    -K / --keys
              Affiche sur la sortie standart toutes les clés du dictionnaire.
  
    --stdin
              Lis les données depuis l'entrée standart, beaucoup plus rapide si un
              grand nombre de données à ajouter/modifier.
              
              Le dictionnaire ouvert de cette manière est bloqué en écriture, pour
              en récupérer des données, il devra être fermer par l'instruction ##CLOSE##.
              
              Les données devront être sous la forme 'key::value'.
              
              Plusieurs instructions sont disponibles pour modifier les clés/valeurs:
              
              ##CLOSE##
                  Pour écrire le dictionnaire et quitter. Cette instructions est impérative
                  pour fermer le dictionnaire et le laisser disponible pour la lecture.
                  
              ##CHANGE##key::indice::value
                  Modifie la valeur d'une clé par son indice.
                  
              ##REPLACE##key::value
                  Remplace toutes les valeurs d'une clé par 'value'
                  
              ##DEL##key[::indice]
                  Supprime une clé, ou une valeur si 'indice' est renseigné.

              
              
  Quelques exemples:
      Ajouter la 'clé1' et sa valeur dans le dictionnaire 'mon_dico':
          dicsh -f mon_dico -k 'clé1' -v 'La valeur de la clé 1'
          
      Modifier la deuxième valeur de 'clé1'
          dicsh -f mon_dico -k 'clé1' -i 1 --value='La deuxième valeur de la clé 1'
      
      Récupérer la première valeur de la clé1:
          dicsh -f mon_dico -k 'clé1' -i 0
      
      Supprimer la 'clé1':
          dicsh -f mon_dico -k 'clé1' --delete
      
      Modifie/ajoute des key/value depuis un fichier:
          dicsh -f mon_dico --stdin < /home/monfichier
              'monfichier' aura en dernière ligne '##CLOSE##' obligatoirement.
              Les données seront du type key::value, des instructions peuvent également
              être passé.
              
      Modifier des key/value en streaming:
          exec 6> >(dicsh -f mon_dico --stdin)
          ...
          echo "key::value" >&6
          ...
          ...
          echo "##REPLACE##key::value" >&6
          echo "##CLOSE##" >&6
          
          Il est également possible de faire une boucle
          for i in {0..10}
            do 
               echo "key::value$i"
               [[ $i == 10 ]] && echo "##CLOSE##"
            done | dicsh -f mon_dico --stdin

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#2 Le 23/06/2011, à 12:14

AnsuzPeorth

Re : [dicsh] Un dictionnaire python's like pour *sh

réservé pour ddicsh, peut être .... smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne