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 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 lol **

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.... roll

Merci de vos avis et conseils, et même des améliorations possibles big_smile !
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 wink
- 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é smile

Hors ligne

#3 Le 06/07/2008, à 05:33

LinuXp0wer

Re : Premiers pas dans le bash...

Salut ,
merci pour le author big_smile

Okay ça marche pour le cat << EOF , merci !

Eh bien c'est surtout un script pour commencer et apprendre big_smile
J'essaierai de faire une tite interface graphique avec zenity après.. Les possibilités sont grandes lol

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 lol

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 / !! hmm

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