tux  Linux underground

Quelques exemples de scripts…

Ne pas oublier de vérifier que le fichier script à l'attribut "exécution" (chmod +x nomfich.sh) et  toujours commencer le script par :

#!/bin/bash
# Description de ce que fait le script

et l'exécuter par ./nomfich.sh

A noter que si toutes les commandes se trouvent sur une ligne, séparées par ";", on peut les encoder en ligne de commande.

  1. Tester la version du noyau :

    if [ `uname -r` == "2.6.0" ]
    then
     <liste de commandes>
    else
     <liste de commandes>
    endif



  2. Petit script contenant une fonction avec passage de paramètres :

    #!/bin/sh

    LIST="file01 file02 file03 file04"

    print()
    {
      for FILE in $*; do
      echo "$FILE"
      done
    }

    print $LIST


  3. Exemple d'utilisation de awk :

    echo part1 part2 part3 part4 | awk '{print $0}'
    Affiche part1 part2 part3 part4

    echo part1 part2 part3 part4 | awk '{print $2}'
    Affiche part2

    Même chose mais avec un séparateur choisi par l'utilisateur :
    echo part1,part2,part3,part4 | awk -F, '{print $2}'

    Même chose mais avec un séparateur qui est un carctère réservé :
    echo "part1;part2;part3;part4" | awk -F\; '{print $2}'

    Un autre exemple concret :
    awk -F: '{ print $1 }' /etc/passwd    (affiche rien que les noms d'utilisateurs)


  4. Passer tous les fichiers du répertoire courant de majuscule en minuscule :

    for n in *; do mv $n `echo $n | tr '[:upper:]' '[:lower:]'`; done


  5. Trier des dossiers par taille :

    du -sk /home/* | sort -n

    (donne la liste de tous les répertoires de /home/ triés par taille, du plus petit au plus gros)


  6. Variable date dans un nom fichier :

    mv mon_fichier mon_fichier`date +%d%m%Y`

    mydat=`date +%Y%m%d`
          ( `date +%Y%m%d%H%M%S` : idem avec l'heure)
    for i in `ls`; do
    mv ${i} ${i}${mydat}
    done



  7. Couper la fin d'un chaîne de caractères (p.ex. travail sur l'extension des fichiers) :

    for file in *.wav; do echo "$file" "${file%*.wav}.mp3"; done

    Ce qui se trouve après "*" est coupé. A la place de echo, on pourrait mettre n'importe quelle commande (cp, convert, …)


  8. Changer l'extension d'une liste de fichiers :

    for fichier in *.JPG
    do
      minus=`echo $fichier | sed -e 's/JPG$/jpg/'`
      mv $fichier $minus
    done


  9. Renommer une liste de fichiers de manière incrémentale :

    j=1; for i in `ls`; do mv $i préfixe_${j}\.jpg; j+=1; done


  10. Renommer (remplacer une sous-chaîne par une autre) une liste de fichiers :

    for i in DSC*.jpg
    do
      j=`echo "$i" | sed 's/DSC\(.*\)\.jpg/Photo \1.jpg/'`
      mv "$i" "$j"
    done

    Dans sed, \1 est remplacé par ce qui est entre \( et \).


  11. Récupérer l'adresse IP (machine connectée par ppp) :

    /sbin/ifconfig ppp0 | /usr/bin/awk /inet/ | /usr/bin/awk 'BEGIN{FS=":"} {print $2}' | /usr/bin/awk '{print "http://" $1 ":8000/mespages"}'

    Cela peut se faire aussi en créant et en utilisant les paramètres du fichier /etc/ppp/ip-up.local


  12. Récupérer l'adresse IP :




Valid XHTML 1.1 CSS Valide !