Rapport sur les scripts en bash

Table of Contents

Isima-logo_INP-RVB.jpg

1. Premier script

ce scripts la est un scripts un peut fun qui fait un peut comme un faux virus, il ouvre des fenetres emacs à l’infini sur notre machine. C’est un code vraiment très court baser sur un while dans lequel on applique la commande “emacs &” puis “sleep 0.5” pour laisser le temps à l’utilisateur d’arreter le script et ne pas faire planter sa machine.

#!/bin/bash

a=true
while [ $a != false ] ; do
    emacs & 
    sleep 0.5
done

2. deuxième script

Bon, les choses sérieuse maintenant, ce script creer un affichage assez intuitif en rapport avec la commande “mv” en bash, le script propose tout d’abord de choisir ce que l’on veut faire entre deplacer un fichier, ou juste le renommer. En fonction de la réponse, on fait des actions différentes, si la réponse n’est pas valide, on redemande de saisir la réponse tant qu’elle n’est pas valide. Si la réponse vaut 1 (déplacer un fichier) on demande le chemin d’accès du répertoire dans lequel se trouve le fichier a modifier, on s’y déplace grâce à la commande “cd”, puis on demande le nom du fichier, enfin on demande le chemin d’accès du répertoire dans lequel on veut déplacer le fichier. Si le fichier existe déjà dans ce repertoire on affiche un message d’erreur, sinon on déplace le fichier dans le répertoire. Si la réponse vaut 2, on donne le chemin d’accès du répertoire ou se trouve le fichier a renommer, on s’y place grâce à “cd”, on demande le nom du fichier, puis le nouveau nom sans l’extension, enfin on demande l’extension du fichier. Si le fichier existe déjà, on renvoie un message d’erreur, sinon on renomme le fichier.

#!/bin/bash

fin="non"
while [[ $fin == "non" ]] ; do
    echo "bonjour que voulez-vous faire?"
    echo "deplacer un/des fichier(s): 1"
    echo "renommer un fichier: 2" 
    reponse=none
    read -r reponse

    while [[ $reponse != "1" && $reponse != "2" ]] ;  do
        echo "veuillez rentrer une valeur correcte"
        echo "Bonjour, que voulez-vous faire?"
        echo "deplacer un/des fichier(s): 1"
        echo "renommer un fichier: 2" 
        read -r reponse
    done

    if [[ $reponse == "1" ]] ; then
        fichier=none
        repertoire1=none
        repertoire2=none
        echo "donnez le chemin d'accès du répertoire ou se trouve le fichier"
        read -r repertoire1
        cd $repertoire1
        echo "donnez le nom du fichier a deplacé"
        read -r fichier
        echo "donnez le chemin d'accès du répertoire dans lequel vous voulez déplacer votre fichier"
        read -r repertoire2
        if [ -e $repertoire2/$fichier ] ; then
                    echo "desoler le fichier existe déjà dans ce répertoire" 
        else
                    echo "le fichier $fichier sera déplacer dans $repertoire"
                    mv -iv $fichier $repertoire2
        fi
    else
        repertoire=none
        fichier=none
        newfichier=none
        extension=none
        echo "donnez le chemin d'accès du répertoire ou se trouve le fichier"
        read -r repertoire
        cd $repertoire
        echo "donnez le nom complet du fichier à renommer"
        read -r fichier
        echo "donnez le nouveau nom du fichier sans l'extension"
        read -r newfichier
        echo "donnez l'extension du fichier"
        read -r extension
        if [ -e $newfichier.$extension ] ; then
            echo "desoler ce fichier existe déjà"
        else
            echo "le fichier $fichier sera renommer en $newfichier.$extension"
            mv -iv $fichier $newfichier.$extension
        fi
    fi
    echo "avez-vous fini? (oui/non)"
    read -r fin
done

3. PS1

Il est possible en bash de modifier le prompt, cette ligne qui s’affiche a chaque ligne de commande. La variable PS1 contient les informations du prompt et il est possible de la modifier, voici ce à quoi elle est initialisé de base: initiale.png

et pour le rendre plus comprehensible, j’ai taper la commande

PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;35m\]utilisateur: \[\033[01;32m\]\u\[\033[35m\]\nsur: \[\033[01;32m\]\h\[\033[35m\]\nrepertoire actuel: \[\033[01;34m\]\w\[\033[00m\]\n\[\033[01;33m\]que voulez-vous?\[\033[01;00m\]"

commande.png

on obtient le résultat suivant: resultat.png qui est plus comprehensible pour ceux qui débutent en bash

4. conclusion

vous pouvez retrouver ce rapport sur ma page personnelle

Author: Benoit DAJOUX

Created: 2023-03-26 dim. 15:40