Shell Linux – Corrigés Exercices 1
TD Shell Linux – Corrigés Exercices 1 Version 1 0 - Sept 2007 Shell Linux – Corrigés Exercices 1 - G VALET – Reproduction interdite 4 / 5 D Jour de la semaine # /bin/sh # Affichage du jour de la semaine en lettres if [ $# -lt 1 ]; then d=`date + w` phrase="Aujourd'hui c'est" else d=$1 phrase="Le jour donné correspond à " fi case
TD n°2 : Programmation shell - Université de Nantes
Projet DVD-MIAGE 2010 TD n°2 : Programmation shell CORRECTION Exercice 1 – Exemple de programme shell Solution : 1) Ce programme crée le répertoire fourni en argument, et au besoin tous les sur-répertoires
TP SCRIPTING PROGRAMMATION SHELL – PARTIE 1
BTS SIO 1 SI 5 Travaux Pratiques Scripting – Commandes SHELL – Partie 1 TP Page 5 sur 29 1 #/bin/bash Le # est appelé le sha-bang /bin/bash peut être remplacé par /bin/sh si vous souhaitez coder pour sh, /bin/ksh pour ksh, etc
Programmation système et réseaux Corrigé du TP 3: Scripts shell
Programmation système et réseaux Corrigé du TP 3: Scripts shell Arnaud Giersch Guillaume Latu Introduction au scripts shells (bash) 1 Placer les commandes qui suivent dans le fichier ˜/temp/bonjour, puis essayer le script : #/bin/bash # Cette première ligne de commentaire est lue et # sert a déterminer quel shell sera appelé pour
TD 9 : Scripts UNIX (corrigé)
TD 9 : Scripts UNIX (corrigé) semaine du 31 mai 1999 Exercice 1 : Mon premier script #/bin/csh # Mon premier script clear while (1) echo "Menu" echo" Affichage repertoire courant 1" echo" Liste des fichiers du repertoire 2" echo" Informations sur un fichier 3" echo" Changement de repertoire 4" echo" n premieres lignes d'un fichier 5" echo
TD n°2 : Programmation shell - Université de Nantes
TD n°2 : Programmation shell Objectif : Pratiquer les bases de l'écriture de scripts shell Exercice 1 – Exemple de programme shell 1) Que fait le programme shell suivant, dont le nom est mystere? #/bin/sh if [ $# -ne 1 ]; then echo "Fournir un nom en parametre" exit 1 fi if [ -d "$1" ]; then exit 0 else "$0" `dirname "$1"` mkdir "$1" fi
TD Unix avanc e Exercices sur les shell-scripts
Exercices sur les shell-scripts ENSIMAG Novembre 2015 1 Utilisation de la ligne de commande En guise d’ echau ement, nous allons voir quelques petites astuces qui rendent la vie plus pratique sous Unix Commencez par cr eer un chier toto txt dans un r epertoire de votre choix (par exemple, ~/tp-unix/) Par exemple, touch toto txt dans le bon
TP n 3 - Correction - Inria
Exercice 2 [Comportement de exec] 1 Faites exec ps Que se passe-t-il? Donnez une explication 2 V´erifiez votre explication en ´etudiant la commande shell exec sh (Quel est le pidde ce shell?) Correction : Comprendre le fonctionnement d’execet qu’il faudra le coupler avec fork Exercice 3 [Path et variables d’environnement] 1
TP 03 : Shell bash - IPGP
TP 03 : Shell bash Pourquoi utiliser bash ? Bash est une version evolu ee du shell sh (le \Bourne shell") Le shell peut ^etre utilis e comme un simple interpr eteur de commande, mais il est aussi possible de l’utiliser comme langage de programmation interpr et e (scripts)
Shells Linux et Unix par la pratique
CHEZ LE MÊME ÉDITEUR C Blaess – Programmation système en C sous Linux N°11054, 2002, 932 pages D Taylor – 100 scripts shell Unix N°11483, 2004, 366
[PDF] prêche du père paneloux commentaire
[PDF] diabète au maroc 2016
[PDF] note d'intention projet
[PDF] la princesse de clèves livre audio
[PDF] la princesse de clèves extrait
[PDF] princesse de montpensier lettres volées
[PDF] publicité radio
[PDF] la note de synthèse exercices corrigés
[PDF] lettres volées montpensier
[PDF] littérature américaine contemporaine thèmes
[PDF] portrait sculpté
[PDF] création argile facile
[PDF] activité sculpture maternelle
[PDF] has obésité
Projet DVD-MIAGE 2010
TD n°2 : Programmation shell
CORRECTION
Exercice 1 - Exemple de programme shell
Solution :
1) Ce programme crée le répertoire fourni en argument, et au besoin tous les sur-répertoires
intermédiaires nécessaires. Note : voir l'option '-p' de mkdir.2) mystere /home/dupont/test/projet
Exercice 2 - La boucle while
Solution :
#!/bin/sh if [ $# -eq 0 ]; then echo "sans argument" exit 0 fi while [ $# -gt 0 ]; do echo $1 shift doneExercice 3 - La commande read
Solution :
#!/bin/sh exec < $1 # redirection de l'entrée standard while read ligne ; do echo ">$ligne" doneExercice 4 - La boucle for
Solution :
#!/bin/sh for rep in *; do # pour chaque fichier "rep" du repertoire courant if [ -d "$rep" ]; then # si rep est un repertoire echo $rep # affiche rep fi doneSystèmes d'exploitationA. Queudet
Projet DVD-MIAGE 2010
Exercice 5 - Opérateurs sur les chaînes
Solution :
Ce programme détermine si l'utilisateur dont le nom est donné comme argument est connecté. #!/bin/sh w=`who | grep $1` if [ -z "$w" ]; then echo "$1 n'est pas connecté"; fiExercice 6 - Les conditionnelles imbriquées
Solution :
#!/bin/sh if [ $# -eq 2 ]; then # si le nombre d'arguments est égal à 2 : rep="." # variable rep vaut le repertoire courant = "." droit=$1 # variable droit vaut le premier argument $1 ext=$2 # variable ext vaut le deuxieme argument $2 elif [ $# -eq 3 ]; then # si le nombre d'arguments est égal à 3 : rep=$1 # variable rep vaut le premier argument $1 droit=$2 # variable droit vaut le deuxieme argument $2 ext=$3 # variable ext vaut le troisieme argument $3 else echo "erreur : donnez 2 ou 3 arguments" 1>&2 exit 1 fi for fich in "${rep}"/*"${ext}"; do # pour chaque fichier "fich" dans rep/*ext: chmod g$droit "$fich" # changer le droit du groupe "g" sur "fich" echo $fich doneExercice 7 - L'instruction case
A noter que l'option -i de la commande rm fait exactement ce que nous voulons.Solution :
#!/bin/sh while [ $# -ne 0 ]; do fich=$1; shift ## ou : for fich in $*; do repeat=1 while [ $repeat -eq 1 ]; do echo "Voulez-vous reellement effacer le fichier \"$fich\" ?" read reponse case "$reponse" in [Oo][Uu][Ii]) rm "$fich" echo "suppression confirmée"Systèmes d'exploitationA. Queudet
Projet DVD-MIAGE 2010
repeat=0 [Nn][Oo][Nn]) echo "suppression abondonnée" repeat=0 echo "reponse invalide" esac done doneExercice 8 - La commande basename
Solution :
#!/bin/sh if [ $# -ne 2 ]; then echo "erreur : donnez 2 arguments." 1>&2 exit 1 fi vieux=$1 nouveau=$2 for fich in *"${vieux}"; do base=`basename "$fich" "$vieux"` mv "$fich" "$base$nouveau" if [ $? -ne 0 ]; then echo "je ne peux pas renommer \"$fich\" en \"$base$nouveau\"" 1>&2 fi doneLa commande basename est ici utilisée pour récupérer dans la variable base le nom du fichier sans
son extension représentée par la variable $vieux. Le nouveau nom du fichier (avec sa nouvelle extension) est donc facile à reconstruire : c'est le nom du fichier base, suivi de la nouvelle extension $nouveau.Exercice 9 - Guillemets, quotes ou back quotes ?
Solution :
1)#!/bin/sh
echo "Entrer le nom d'un répertoire : " read dir echo "Le répertoire $dir contient les fichiers suivants :" ls "$dir"2)#!/bin/sh
Systèmes d'exploitationA. Queudet
Projet DVD-MIAGE 2010
echo "Entrer le nom d'un répertoire : " read dir if [ $# -ne 0 ]; then echo "Erreur : Le script doit être appelé avec 1 argument" 1>&2 exit 1 fi if [ ! -d "$dir" ]; then echo "Erreur : \"$dir\" n'est pas un répertoire" 1>&2 exit 1 fi if [ ! -r "$dir" ]; then echo "Erreur : je ne peux pas lire le répertoire \"$dir\"" 1>&2 exit 1 fi # On essaye d'aller dans le répertoire $dir pour utiliser # pwd pour déterminer son nom absolu cd "$dir" 2> /dev/null if [ $? -ne 0 ]; then # on garde alors le nom donné cmd="ls \"$dir\"" else dir=`pwd` cmd="ls" fi echo "Le répertoire \"$dir\" contient les fichiers suivants :" exec $cmdExercice 10 - Les expressions régulières
Solution :
1) Il faut indiquer que l'on veut le début de la ligne, avec le chapeau. Afin de préciser que la ligne
commence par un 'a' minuscule ou majuscule, il y a deux façons de faire : •Utiliser l'option -i qui fait ignorer la différence entre les majuscules et le minuscules. •Dire que l'on cherche un 'a' ou un 'A' en utilisant les crochets.Enfin, il faut protéger les signes contre le shell, pour qu'il ne les interprète pas; on met donc
l'expression entre apostrophes.Il faut donc écrire :
grep -i '^a' fichier ou grep '^[aA]' fichier2) C'est le dollar ($) qui représente la fin de la ligne. Il faut donc écrire : grep 'rs$' fichier
Systèmes d'exploitationA. Queudet
Projet DVD-MIAGE 2010
3) grep '[0-9]' fichier
4) grep '^[A-Z]' fichier
5) grep '^[BEQ]' fichier
6) Le point d'exclamation n'a pas de signification particulière avec grep, on peut donc le mettre tel
quel : grep '!$' fichier7) Pour que grep interprète littéralement le caractère '.' et ne le considère plus comme spécial, il
faut le faire précéder d'un backslash (\). grep '\.$' fichier8) Les caractères spéciaux sont protégés par les crochets. On peut donc écrire :
grep '[^.,;:?!]$' fichierOn peut aussi utiliser l'option -v, qui prend toutes les lignes où ne figure pas une chaîne de
caractères donnée; dans ce cas, on tape : grep -v '[.,;:?!]$' fichier