Bonjour, je relance les scripteurs fous avec quelques trucs :
NB : d'abord la notation `une_fonction` est en train de disparaître au profit de "$(une_fonction)"
ensuite, voici un bout de script pour utiliser la gestion des ini (ou conf)
c'est à dire enregistrer et lire un fichier ini
suite de cette vieille discussion
#!/bin/bash
nomLogiciel="$(basename "$0")"
FONCTION="lecture et écriture de fichier ini ou conf"
VERSION="alpha"
echo "lancement $nomLogiciel..."
function _quitter {
# mettre ici tout ce qui sera nécessaire à la bonne fermeture
echo "--------------------------------
AVANT sauverIni le fichier ini contient :"
cat $fichierIni
# echo "$(sauverIni)" > "$nomLogiciel.ini" ;
sauverIni ;
echo "--------------------------------
APRES sauverIni le fichier ini contient :"
cat $fichierIni
exit 0
}
function parserLigneIni {
i=$@ ;
case $i in
# xxxxx=*) xxxxxx="${i#*=}" ;;
nomLogiciel=*) nomLogiciel="${i#*=}" ;;
FONCTION=*) FONCTION="${i#*=}" ;;
VERSION=*) VERSION="${i#*=}" ;;
une_valeur=*) une_valeur="${i#*=}" ;;
une_autre_valeur=*) une_autre_valeur="${i#*=}" ;;
une_troisieme=*) une_troisieme="${i#*=}" ;;
esac
}
function chargerIni {
# [ -f "$fichierIni" ] || \#
while read line ;
do
parserLigneIni "$line" ;
done < "$fichierIni" ;
}
function sauverIni {
echo "nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
" > "$nomLogiciel.ini" ;
}
function _initialisation {
une_valeur="On peut changer le fichier ini puis"
une_autre_valeur="le relancer pour voir les changements"
une_troisieme="des espaces et des lettres accentuées àÂâêïù"
echo "Les valeurs AVANT chargerIni sont :
nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
"
fichierIni="$nomLogiciel.ini"
echo "le nom du fichier ini est : $fichierIni"
chargerIni ;
echo "Les valeurs APRES chargerIni sont :
nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
"
}
function _main {
_quitter
}
_initialisation
_main
echo "Ne doit pas s'afficher !"
exit 0
celui là c'est pour ranger tous les fichiers d'un dossier et ses sous dossiers
par
type mime
il doit pouvoir s'améliorer en gérant plutôt les extensions
#!/bin/bash
nomLogiciel="$(basename "$0")" ;
# script pour réorganiser une arborescence rapidement
FONCTION="organiser les fichiers
en les rangeant dans des dossiers au nom des types mimes" ;
VERSION="0.7" ;
# NOTES DE VERSIONS
# ----------------------------------------------
#
# ----------------------------------------------
#
# Copyright (C) 22 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.
#
# modifié par kholo-informatique 2016
# www.kholo-informatique.fr
#********************************************************************
function creer_journal {
fichier_log="$nomLogiciel.log"
journal "$(date)
Ouverture de $nomLogiciel"
}
function journal {
./journal "$fichier_log" "$@"
}
creer_journal
# journal "Chargement..." "voir_journal"
function voir_journal {
journal "-----------------
FONCTION voir_journal $@
-----------------"
zenity --text-info \
--width=600 --height=450 \
--title="Fichier Journal" \
--filename=$"$fichier_log" \
--checkbox="vider le journal en quittant."
case $? in
0) rm -f "$fichier_log";
creer_journal
journal "RàZ Remise à zéro du journal !"
;;
1) journal "Sortie - voir_journal !" ;;
-1) journal "voir_journal - An unexpected error has occurred." ;;
esac
}
#********************************************************************
journal "lancement $nomLogiciel..." ;
#********************************************************************
# journal "Chargement..." ""_initialisation
function _initialisation {
journal "-----------------
FONCTION _initialisation
-----------------" ;
# Couleurs du texte affiché dans le shell
FUSHIA="\033[1;35m" ;
NOIR="\033[1;0m" ;
BLEU="\033[1;34m" ;
VERT="\033[1;32m" ;
ROUGE="\033[1;31m" ;
# dirOrigine="/répertoire à trier"
dirOrigine="$HOME" ;
# dirDestination="/répertoire de destination"
dirDestination="$HOME" ;
nbreDeFichiers=0 ;
fichierIni="$nomLogiciel.ini"
chargerIni ;
}
# journal "Chargement..." "chargerIni"
function chargerIni {
journal "-----------------
FONCTION chargement ini
-----------------" ;
# local x ;
while read line ;
do
journal "$line" ;
parserLigneIni "$line" ;
done < "$fichierIni" ;
journal "chargement terminé" ;
}
# journal "Chargement..." "_quitter"
function _quitter {
journal "-----------------
FONCTION _quitter
-----------------" ;
# mettre ici tout ce qui sera nescessaire à la bonne fermeture
sauverIni ;
exit 0
}
#********************************************************************
# journal "Chargement..." "parserLigneIni"
function parserLigneIni {
journal "-----------------
FONCTION parserLigneIni
-----------------" ;
i=$@ ;
journal "parseur $i" ;
case $i in
# xxxxx=*) xxxxxx="${i#*=}" ;;
dirOrigine=*) dirOrigine="${i#*=}" ;;
dirDestination=*) dirDestination="${i#*=}" ;;
esac
}
# journal "Chargement..." "sauverIni"
function sauverIni {
journal "-----------------
FONCTION sauverIni
-----------------" ;
echo "dirOrigine=$dirOrigine
dirDestination=$dirDestination
" > "$nomLogiciel.ini" ;
}
#********************************************************************
# journal "Chargement..." "range"
function range {
heuredebut=$(date +%s.%N) ;
# local ORIG=${ORIG%/} ;
# local DEST=${DEST%/} ;
local ORIG=${dirOrigine%/} ;
local DEST=${dirDestination%/} ;
find $ORIG/ -regextype "posix-extended" -depth -type f -regex ".*" | while read fichier ; do
((nbreDeFichiers++)) ;
a=$(file -ib "${fichier}") ;
journal "------------------------------------------------
en cours : $a" ;
[ -d "$DEST/${a%%/*}" ] || mkdir -p "$DEST/${a%%/*}" ;
mvfichierext=${fichier##*/} ;
mvfichier=${mvfichierext%%.*} ;
ext=${mvfichierext#*.} ;
journal "N° $nbreDeFichiers
fichier : $fichier
mvfichierext : $mvfichierext
mvfichier : $mvfichier
ext : $ext " ;
# sleep 2 ; #-pour prendre le temps de regarder !
[ "${fichier%/*}" != "$DEST/${a%%/*}" ] && {
[ -f "$DEST/${a%%/*}/${mvfichierext}" ] && {
b=1 ;
while [ -f "$DEST/${a%%/*}/${mvfichier}_copie${b}.${ext}" ] ; do ((b++)) ; done
mv "${fichier}" "$DEST/${a%%/*}/${mvfichier}_copie${b}.${ext}" ;
} || mv "${fichier}" "$DEST/${a%%/*}/${mvfichierext}" ;
}
journal "destination : $DEST/${a%%/*}" ;
duree="$(echo "$(date +%s.%N) - $heuredebut" | bc)" ;
journal "Traitement de $nbreDeFichiers fichiers en $duree secondes" ;
done
# supprimer les dossiers quand le travail est terminé
# find $ORIG/ -type d -exec rmdir 2>/dev/null {} \;
duree="$(echo "$(date +%s.%N) - $heuredebut" | bc)" ;
journal "Traitement de $nbreDeFichiers fichiers en $duree secondes" ;
}
#********************************************************************
# journal "Chargement..." "frm_principale"
function frm_principale {
journal "-----------------
FONCTION frm_principale
-----------------" ;
LAQUESTION="
---------------------------------------------------------------------
<b>Organisation de fichiers</b>
$FONCTION
Ce module <b>recherche des fichiers</b> selon un <b>modèle</b>
puis les <b>déplace</b>
depuis un <b>dossier origine</b> vers un <b>dossier destination</b>
" ;
local KA="Dossier Origine" ;
local KB="Dossier Destination" ;
local KC="Organiser " ;
local KD="" ;
local KE="" ;
local KF="" ;
local KG="" ;
local KH="" ;
local KI="journal" ;
local VA="$dirOrigine" ;
local VB="$dirDestination" ;
local VC="fichiers par type mime" ;
local VD="" ;
local VE="Valeur 9" ;
local VF="Valeur 6" ;
local VG="Valeur 7" ;
local VH="Valeur 8" ;
local VI="voir et RàZ" ;
zenity --list --width=600 --height=350 --text="$LAQUESTION" \
--ok-label="Sélectionner" \
--cancel-label="quitter" \
--hide-column 1 --column "" --column "choix" --column "valeur" \
1 "$KA" "$VA" \
2 "$KB" "$VB" \
0 "" "" \
3 "$KC" "$VC" \
0 "" "" \
9 "$KI" "$VI" ;
# 4 "$KD" "$VD" \
# 5 "$KE" "$VE" \
# 6 "$KF" "$VF" \
# 7 "$KG" "$VG" \
# 8 "$KH" "$VH" \ #
}
# journal "Chargement..." "frm_principale_parser"
function frm_principale_parser {
journal "-----------------
FONCTION frm_principale_parser
-----------------" ;
case $1 in
1) setDirOrigine ;;
2) setDirDestination ;;
3) range ;;
# 4) echo "rien encore" ;;
# 5) echo "rien encore" ;;
# 6) echo "rien encore" ;;
# 7) echo "rien encore" ;;
# 8) echo "rien encore" ;;
9) voir_journal ;;
0)
echo ""
;;
*)
quitter="1"
_quitter ;;
esac
}
#********************************************************************
# journal "Chargement..." "_main"
function _main {
journal "-----------------
FONCTION _main
-----------------" ;
menuchoice=$(frm_principale);
frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1
if [ $quitter!="1" ] ; then
# on boucle tant que quitter est différent de 1
# pas de else car pas nescessaire ;°)
_main ;
fi
}
#********************************************************************
# journal "Chargement..." "setDirOrigine"
function setDirOrigine {
journal "-----------------
FONCTION setDirOrigine
-----------------" ;
local dirOrigineOld="$dirOrigine" ;
dirOrigine="$(zenity --file-selection --directory --filename="$dirOrigine/")" ;
if [ $? = 0 ] ;
then
journal "Le dirOrigine est ${dirOrigine}" ;
else
dirOrigine="$dirOrigineOld" ;
fi
}
# journal "Chargement..." "setDirDestination"
function setDirDestination {
journal "-----------------
FONCTION setDirDestination
-----------------" ;
local dirDestinationOld="$dirDestination" ;
dirDestination="$(zenity --file-selection --directory --filename="$dirDestination/")" ;
if [ $? = 0 ] ;
then
journal "dirDestination : ${dirDestination}" ;
else
dirDestination="$dirDestinationOld" ;
fi
}
# journal "Chargement..." "afficher_aide_ldc"
function afficher_aide_ldc {
echo "
-----------------------------------------------
exemples :
$nomLogiciel -[OPTIONS]
-----------------------------------------------
"
}
#********************************************************************
# journal "Chargement..." "parser_arguments_VARIABLES"
function parser_arguments_VARIABLES {
journal "-----------------
FONCTION parser_arguments_VARIABLES $@
-----------------"
# PARSER VARIABLES
local i
for i in $@ ;
do
case $i in
-h|-H|--help) afficher_aide_ldc ;;
# fiche=*) fiche="${i#*=}" ;;
fichier_rch=*) fichier_rch="${i#*=}" ;;
esac
done
}
# journal "Chargement..." "parser_arguments_ACTION"
function parser_arguments_ACTION {
journal "-----------------
FONCTION parser_arguments_ACTION $@
-----------------"
local i
for i in $@
do
case $i in
-r|--range) range ;;
# *) journal "$i - unknown option" ;;
esac
done
}
#********************************************************************
# journal "Chargement..." "EDITION_IN"
function EDITION_IN {
journal "-----------------
FONCTION EDITION_IN $@
-----------------"
_initialisation
_main
}
# journal "Chargement..." "EDITION_OUT"
function EDITION_OUT {
journal "-----------------
FONCTION EDITION_OUT
-----------------"
parser_arguments_VARIABLES "$@"
_initialisation
parser_arguments_ACTION "$@"
}
# ********************************************************************
if [ "$#" -eq 0 ]; then
journal "mode_edition=TRUE -> IN"
mode_edition="TRUE"
EDITION_IN
else
journal "mode_edition=FALSE -> OUT"
mode_edition="FALSE"
EDITION_OUT "$@"
fi
# ********************************************************************
exit 0
Pour les GUI vite faits avec une liste de choix j'ai ce genre de chose avec zenity list
je remet un exemple que j'ai mis sur le forum pour lancer des jeux dans Mame
#!/bin/bash
# ----------------------------------------------
nomLogiciel="$(basename "$0")"
FONCTION="lancement de jeux avec Mame"
VERSION="alpha"
# NOTES DE VERSIONS
#
# ----------------------------------------------
# à mettre au début d'un fichier bash
# pas encore géré
# PID=$$
# FIFO=/tmp/FIFO${PID}
# mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomLogiciel..."
declare -a GAME_NAME ;
declare -a GAME_PATH ;
declare -a GAME_ARGS ;
function _journal {
fichier_log="$nomLogiciel.log"
if [ -f "$fichier_log" ];
then
echo "..."
else
echo "Création du fichier de log : $fichier_log"
touch "$fichier_log";
fi
}
echo "ouverture du journal"
_journal
function journal {
echo "$@" >> $fichier_log
}
# journal "Chargement..." "voir_journal"
function voir_journal {
journal "-----------------
FONCTION voir_journal $@
-----------------"
zenity --text-info \
--width=600 --height=450 \
--title="Fichier Journal" \
--filename=$"$fichier_log" \
--checkbox="vider le journal en quittant."
case $? in
# 0) 2>/dev/NULL > "$fichier_log";
0) rm -f "$fichier_log" ;
_journal
journal "RàZ Remise à zéro du journal !"
;;
1) journal "Sortie - voir_journal !" ;;
-1) journal "voir_journal - An unexpected error has occurred." ;;
esac
}
# journal "Chargement..." "_initialisation"
function _initialisation {
journal "*******************initialisation*******************"
quitter="0"
journal "VARIABLES"
MAME="/usr/games/mame"
LAQUESTION="<b>$nomLogiciel</b>
--------------------------------------------------
Ce module est une liste de choix de jeux Mame
--------------------------------------------------
le double clic sur un choix pour lancer un jeu
sélection avec les flèches puis entrée aussi
echap pour quitter
" ;
#-------------------------------------------------------------
GAME_NAME[0]="Nom" ;
GAME_PATH[0]="Chemin" ;
GAME_ARGS[0]="Arguments" ;
#-------------------------------------------------------------
# METTRE LA LISTE ET LES PARAMETRAGES DES JEUX ICI
# ATTENTION ZENITY EST TRES CHATOUILLEUX
# IL N'AIME PAS LES LES VARIBLES QUI COMMENCENT PAR UN TIRET "-"
# SOLUTION : METTRE UN ESPACE
#-------------------------------------------------------------
GAME_NAME[1]="makaimurg" ;
GAME_PATH[1]="/home/mame/roms/makaimurg" ;
# METTRE LES DIFFERENTES CONF A COMMENTER OU DECOMMENTER
# GAME_ARGS[1]=" -resolution 1900x1080 -waitvsync -cheat -autosave" ; # CONFIG MAXI
GAME_ARGS[1]=" -resolution 1400x1050 -waitvsync -cheat -autosave" ; # CONFIG DEFAUT
# GAME_ARGS[1]=" -resolution 1024x768 -waitvsync -cheat -autosave" ; # CONFIG MINI
#-------------------------------------------------------------
GAME_NAME[2]="Jeux 2" ;
GAME_PATH[2]="/chemin/vers/jeux2" ;
GAME_ARGS[2]="arguments de Jeux 2" ;
#-------------------------------------------------------------
GAME_NAME[3]="Jeux 3" ;
GAME_PATH[3]="/chemin/vers/jeux3" ;
GAME_ARGS[3]="arguments de Jeux 3" ;
#-------------------------------------------------------------
GAME_NAME[4]="Jeux 4" ;
GAME_PATH[4]="/chemin/vers/jeux4" ;
GAME_ARGS[4]="arguments de Jeux 4" ;
#-------------------------------------------------------------
GAME_NAME[5]="Jeux 5" ;
GAME_PATH[5]="/chemin/vers/jeux5" ;
GAME_ARGS[5]="arguments de Jeux 5" ;
#-------------------------------------------------------------
GAME_NAME[6]="Jeux 6" ;
GAME_PATH[6]="/chemin/vers/jeux6" ;
GAME_ARGS[6]="arguments de Jeux 6" ;
#-------------------------------------------------------------
GAME_NAME[7]="Jeux 7" ;
GAME_PATH[7]="/chemin/vers/jeux7" ;
GAME_ARGS[7]="arguments de Jeux 7" ;
#-------------------------------------------------------------
GAME_NAME[8]="Jeux 8" ;
GAME_PATH[8]="/chemin/vers/jeux8" ;
GAME_ARGS[8]="arguments de Jeux 8" ;
#-------------------------------------------------------------
GAME_NAME[9]="Jeux 9" ;
GAME_PATH[9]="/chemin/vers/jeux9" ;
GAME_ARGS[9]="arguments de Jeux 9" ;
#-------------------------------------------------------------
}
# journal "Chargement..." "_quitter"
function _quitter {
journal "_quitter"
# mettre ici tout ce qui sera nescessaire à la bonne fermeture
exit 0
}
# journal "Chargement..." "frm_principale"
function frm_principale {
journal "*******************frm_principale*******************"
zenity --list --width=600 --height=430 --text="$LAQUESTION" \
--ok-label="Sélectionner" \
--cancel-label="quitter" \
--hide-column 1 --column "" --column "${GAME_NAME[0]}" --column "${GAME_ARGS[0]}" \
1 "${GAME_NAME[1]}" "${GAME_ARGS[1]}" \
0 "" "" \
2 "${GAME_NAME[2]}" "${GAME_ARGS[2]}" \
3 "${GAME_NAME[3]}" "${GAME_ARGS[3]}" \
4 "${GAME_NAME[4]}" "${GAME_ARGS[4]}" \
5 "${GAME_NAME[5]}" "${GAME_ARGS[5]}" \
6 "${GAME_NAME[6]}" "${GAME_ARGS[6]}" \
7 "${GAME_NAME[7]}" "${GAME_ARGS[7]}" \
8 "${GAME_NAME[8]}" "${GAME_ARGS[8]}" \
9 "${GAME_NAME[9]}" "${GAME_ARGS[9]}" \
0 "" "" \
100 "journal" "voir les logs" \
101 "aide" "texte aide" ;
}
# journal "Chargement..." "frm_principale_parser"
function frm_principale_parser {
journal "*******************frm_principale_parser*******************"
journal "frm_principale_parser : $1"
case $1 in
# 1) lanceur "$1" ;;
[1-9]) lanceur $1 ;;
100) voir_journal ;;
101) voir_aide ;;
0) echo "" ;;
*) # quitter="1" ;
_quitter ;;
esac
}
# journal "Chargement..." "lanceur"
function lanceur {
nombre=$1
echo "lancement de ${GAME_NAME[$nombre]}"
# $MAME "${GAME_PATH[9]}" "${GAME_ARGS[9]}"
}
# journal "Chargement..." "_main"
function _main {
journal "_main"
menuchoice=$(frm_principale);
frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1
if [ $quitter!="1" ] ; then
#on boucle tant que quitter est différent de 1
#pas de else car pas nescessaire ;°)
_main
fi
}
# journal "Chargement..." "voir_aide"
function voir_aide {
echo "
ce script crée un fichier journal avec un .log
les fonction _journal et journal
un appel de journal fonctionnera comme echo
_initialisation porte bien son nom
il est lancé avant main
mettre les jeux dedans selon le modèle laissé
_main
la boucle permet de relancer l'interface principale
chaque fois qu'une action est terminée
frm_principale
lance zenity et retournera le numéro de ligne sélectionnée
frm_principale_parser
effectuera une action selon la réponse donnée par frm_principale
_quitter
permet de fermer plus proprement son application
"
}
# #-initialisation
_initialisation
_main
exit 0
bon code !