Créer le script nommé test1
et comportant les instructions suivantes :
echo script test1
pwd
ls -l
Donner à ce fichier une autorisation d'exécution avec chmod u+x test1
.
Déclencher l'exécution avec
- la commande
./test1
, - la commande
test1
, après avoir ajouté dans la variable d'environnementPATH
le chemin d'accès au répertoire dans lequel se trouve le scripttest1
.
Ecrire un script nommé la
qui affiche tous les fichiers du répertoire fourni en argument.
Ecrire le script saisie
suivant :
echo "saisie : "
read a b
echo "a=$a"
echo "b=$b"
Tester dans les cas suivants :
saisie
entréesaisie
entréetoto
entréesaisie
entréetoto titi
entréesaisie
entréetoto titi tata
entrée
Ecrire un script nommé existe
qui admet deux paramètres, un nom de fichier et un nom de répertoire, respectant la description fonctionnelle suivante :
- s'il n'y a aucun argument, le script doit indiquer sur la sortie standard quel est l'usage attendu du script,
- s'il n'y a qu'un argument représentant un fichier, faire la recherche dans le répertoire courant,
- s'il y a deux arguments, un fichier, suivi d'un répertoire, indiquer si le fichier donné se trouve dans le répertoire donné ou non.
- s'il y a trop d'arguments ou si le premier (resp. second) n'est pas un fichier (resp. répertoire), écrire un message d'erreur.
Vous utiliserez les structures de contrôle case
pour le nombre d'arguments, if
pour s'assurer que les chaines représentent des fichiers ou répertoires, ainsi que les commandes echo
, test
, find
ou ls
et grep
.
Note : si vous ne voulez pas de l'affichage d'une commande vous pouvez rediriger sa sortie standard ou d'erreur vers /dev/null
.
Ecrire un script nommé utilisateur
qui recherche plusieurs numéros d'utilisateurs dans le fichier /etc/passwd
(les numéros d'utilisateur se trouvent dans le troisième champs).
- si aucun paramètre n'est fourni, on affiche la liste des numéros d'utilisateur,
- sinon, pour chaque numéro fourni, on indique si celui-ci se trouve dans le fichier
/etc/passwd
ou non.
Vous serez amenés à utiliser echo
, cut
, grep
, ainsi que les structures de contrôle if
et for
.
Ecrire un script nommé question
qui admet en entrée une question, la pose à l'utilisateur et attend sa réponse.
- si la réponse est
o
(oui), le script retourne0
avec la commandeexit
. - si la réponse est
n
(non), le script retourne immédiatement1
, - si la réponse est autre, le script repose la question.
Vérifier le code renvoyé par le script avec la commande echo $?
.
Ecrire un script nommé effaceTout
qui utilise le script question
pour le dialogue avec l'utilisateur. Il admet en entrée une liste de chemins. Pour tous les chemins correspondant à des fichiers, il demande à l'utilisateur de confirmer leur suppression et le supprime dans le cas d'une réponse positive. Pour tous les chemins correspondant à des répertoires, il demande à l'utilisateur de confirmer la suppression de tout son contenu et déclenche cette opération dans le cas d'une réponse positive.
Un processus peut se protéger contre un signal en donnant une instruction à faire à la place de ce qu'il doit faire normalement à la réception du signal en question (en général, se terminer). Pour mettre en oeuvre ce mécanisme à l'exécution d'un script bash, on utilise la commande trap
.
Ecrire un script nommé pas10pas12
qui se met en attente active (boucle infinie) et affiche "signal 10" (resp. "signal 12") à la réception du signal 10 (resp. 12).
Pour envoyer des signaux à votre script en cours d'exécution, utilisez les commandes ps
et kill
.
Ecrire un script en attente perpétuelle de signaux. Le signal 10 (resp. 12) aura la valeur 0 (resp. 1) dans la table ASCII. Quand une lettre de l'alphabet (minuscule) est reconnue, celle-ci est affichée sur la sortie standard. Note : si vous êtes avancés, utilisez des fonctions pour la traduction des signaux vers les caractères.