Pages : 1
#1 Le 06/07/2008, à 00:12
- LinuXp0wer
Premiers pas dans le bash...
Bonjour à tous,
je fais mes premiers pas dans le bash et j'en suis plutôt content d'apprendre ce language. Ma foi , j'ai un script, j'aurai aimé des avis pour l'optimiser ou des conseils, etc.
** Vous remarquerez que j'ai fait une tite fonction autor au début, c'est rien **
Le script en quelques mots. Il ne sert strictement à rien , j'utilise juste ls mais il demande à l'user dans cet ordre là :
- Le chemin du dossier à lister .
- L'extension à lister si l'on veut chercher des types de fichiers précis.
- Et une petite mise en forme....
Merci de vos avis et conseils, et même des améliorations possibles !
Sam.
#!/bin/bash
# Script Par SamOuy !
function autor {
echo "
********************************************************
** My First Bash Script ------------------- Samouy =D **
********************************************************
"; }
function Dir {
if [ -z "$direnter" ]; then
echo "
***************************************************
** Vous n'avez pas rentré de chemin de dossier ! **
*************************************************** ";
autor
exit 0 ;
elif [ -d "$direnter" ]; then
echo "
********************
** Dossier Valide **
********************
";
else
echo "
***********************************************************
** Le dossier n'existe pas ou le chemin n'est pas valide **
*********************************************************** ";
autor
exit 0 ;
fi }
echo "
==========================<|_LISTE_DES_FICHIERS_|>==========================
";
echo -n "* Entrez le chemin du dossier à lister : ";
read direnter
Dir
cd $direnter
echo -n "* Quels extension voulez-vous afficher ? Tapez l'extension/les extensions voulue(s)
(.png, .jpg, .gif, etc.) ou ne mettez rien si vous voulez tout afficher : "
read ext
if [ -z "$ext" ]; then
echo "
* Liste des fichiers dans $direnter ...
========================================================================" ;
ls --color=auto $direnter
echo "========================================================================" ;
else
echo "
* Liste des fichiers dans $direnter avec l'extension $ext ...
========================================================================" ;
ls --color=auto $ext
echo "========================================================================" ;
fi
autor
Dernière modification par LinuXp0wer (Le 06/07/2008, à 00:50)
Don't Worry, Be Happy, Now.
Ancien Geek Carabin
HP mini sous Ubuntu 11.10
Hors ligne
#2 Le 06/07/2008, à 04:09
- Link31
Re : Premiers pas dans le bash...
À première vue, pour les améliorations, je dirais :
- author
- attention à l'indentation
- sachant que c'est un script bash, remplace les echo sur plusieurs lignes par des cat <<- EOF, c'est beaucoup plus clair :
echo "ligne1
ligne2
ligne3"
cat <<- EOF
ligne1
ligne2
ligne3
EOF
Le <<- permet au passage d'indenter ton script correctement, ce que ne permet pas un echo sur plusieurs lignes.
Enfin, ça fait beaucoup de lignes pour remplacer un ls /dossier/*.extension... À moins que ça ne soit que pour apprendre, ou alors une base pour un script plus évolué
Hors ligne
#3 Le 06/07/2008, à 05:33
- LinuXp0wer
Re : Premiers pas dans le bash...
Salut ,
merci pour le author
Okay ça marche pour le cat << EOF , merci !
Eh bien c'est surtout un script pour commencer et apprendre
J'essaierai de faire une tite interface graphique avec zenity après.. Les possibilités sont grandes
a+,
Sam.
Dernière modification par LinuXp0wer (Le 06/07/2008, à 05:44)
Don't Worry, Be Happy, Now.
Ancien Geek Carabin
HP mini sous Ubuntu 11.10
Hors ligne
#4 Le 06/07/2008, à 18:47
- RG
Re : Premiers pas dans le bash...
bonjour,
autre amélioration pour forcer le user à entrer une réponse non vide :
while [ "$REPONSE" = "" ] # tant que REPONSE vaut chaine vide
do
echo -n "Entrer quelque chose : " # -n pour ne pas passer à la ligne
read REPONSE
done
encore une amélioration pour s'assurer que le user donne un réponse parmi une liste (il est plus facile
d'entrer un numéro pour une valeur que la valeur elle-meme (risque de faute de frappe)) :
echo "1- .jpg"
echo
echo "2- .gif"
echo
echo -n "Votre choix : "
read CHOIX
case $CHOIX in
1 ) echo "Vous avez choisi .jpg"
;;
2 ) echo "Vous avez choisi .gif"
;;
* ) echo "Choix iconnu !"
;;
esac
bonne chance
RG
#5 Le 06/07/2008, à 19:59
- Alain.g
Re : Premiers pas dans le bash...
Bonsoir
L'erreur principale est que tu n'utilises pas les guillemets là où il faudrait. Si le nom du dossier contient des caractères spéciaux (par exemple un simple espace), ce posera ou pourra poser problème.
Pour éviter cela il faut protéger les variables par des guillemets (sauf si on ne souhaite pas que les métacaractères soient pris littéralement, comme dans le cas de $ext je suppose).
Il semble y avoir un incompréhension au sujet d'exit : 0 signifie que l'exécution à réussie.
Sinon pour les messages d'erreur : echo envoie vers stdout, pour envoyer vers stderr on peut faire :
echo "$message" >&2
Xubuntu Karmic !
Hors ligne
#6 Le 07/07/2008, à 22:44
- LinuXp0wer
Re : Premiers pas dans le bash...
Wahou alain.g ,
tu m'as envoyé une énorme doc dans la tronche...j'ai de la lecture
Et donc pour finir un script, comment fais-ton dans mon cas ? Juste pour savoir, je pense que je fais faire deux boucles while comme le suggère RG (merci à toi) ..
par contre je ne comprends pas le echo "$message " >&2 , etc..
Merci et a+,
Samouy.
Don't Worry, Be Happy, Now.
Ancien Geek Carabin
HP mini sous Ubuntu 11.10
Hors ligne
#7 Le 07/07/2008, à 23:15
- LinuXp0wer
Re : Premiers pas dans le bash...
Re-bonsoir à tous,
j'aurai aimé savoir dans la partie ou il faut rentrer le dossier à lister :
des fois il me mets qu'il n'existe pas alors qu'il existe bel et bien ! Par exemple quand j'essaye de lister mon /home/ .... Mais encore quand je mets un espace après le chemin... Ou même ma racine / !!
J'aurai aimé aussi savoir si l'on pouvait activer l'autocomplétion du chemin dans ce cas là ... !
Merci ,
Sam.
Don't Worry, Be Happy, Now.
Ancien Geek Carabin
HP mini sous Ubuntu 11.10
Hors ligne
Pages : 1