#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
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 ....
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne