[PDF] Initiation à la programmation shell : Partiel





Previous PDF Next PDF



Révision

22 déc. 2017 Correction Exercice#4. Page 18. Exercice #5. ○ Écrire un script shell dont l'unique paramètre est une moyenne. Le script affiche. – Mauvais si ...





Scripts shell

Exercices et corrigés. 174 QCM. 80 travaux pratiques et leurs corrigés. Près de Corrigé 11.2 Un script de démarrage et d'arrêt d'un service .



TD 9 : Scripts UNIX (corrigé)

31 mai 1999 Exercice 1 : Mon premier script. #!/bin/csh. # Mon premier script clear ... #!/bin/csh. # Script 2b. # les arguments récupérés dans $1 $2 et $3.



TD n°2 : Programmation shell CORRECTION

Exercice 1 – Exemple de programme shell. Solution : 1) Ce programme crée le echo "Erreur : Le script doit être appelé avec 1 argument" 1>&2 exit 1 fi if ...



Polycopié TP Système dexploitation Unix Exercices et Quelques

Exercices et Quelques Corrigés. Sous RedHat Linux/Unix. Dr. Djamila BENHADDOUCHE. Page 2 débutants le shell bash qui a été écrit pour Linux et possède un ...



sous Unix/Linux

Programmation shell sous Unix/Linux. Programmation shell sous Unix/Linux ksh bash sous Unix/Linux - ksh



TP no 1: Introduction au Shell (corrigé)

Écrire un script shell qui a che tous ses paramètres mais un par ligne. for I Exercice 3. Curling. - Di cile. Le but de cet exercice est d'écrire un script ...



TP: Programmation Shell

script le nom de l'utilisateur



Révision

22 déc. 2017 Exercice#2. ? Écrire un script shell script1.sh qui affiche la date d'aujourd'hui en utilisant la commande date. Le script affiche :.



TD n°2 : Programmation shell CORRECTION

Exercice 1 – Exemple de programme shell Exercice 5 – Opérateurs sur les chaînes ... echo "Erreur : Le script doit être appelé avec 1 argument" 1>&2.



TP: Programmation Shell

Exercice N°4 : Créez la commande copier. La commande reçoit en argument deux noms de fichiers la source et la destination. Le script se termine et 



Scripts shell

Scripts shell. Programmez sous Unix/Linux. (sh ksh



Cours et exercices corrigés Initiation et utilisation

Cours et exercices corrigés. SCIENCES SUP. LINUX. Initiation et utilisation 8.2.1 Les variables prédéfinies du Bash (non définies en Bourne-shell).



TP 03 : Shell bash

17 janv. 2017 finds bugs in your shell scripts. Exercice : param`etres. Écrivez un script analyse.sh qui affiche : Bonjour vous avez rentré nombre ...



sous Unix/Linux

sous Unix/Linux - ksh bash



TD 9 : Scripts UNIX (corrigé)

TD 9 : Scripts UNIX (corrigé) semaine du 31 mai 1999. Exercice 1 : Ecrire un script qui concatène puis trie deux fichiers file1 et file2 dans un nouveau ...



Initiation à la programmation shell : Partiel

Le but de cet exercice est de construire pas à pas un script ranger qui range les fichiers passés en arguments dans les sous-répertoires images documents ou 



Unix : shells et gestion de processus

6 nov. 2004 Unix Linux et Windows XP avec C et Java. Cours et exercices corrigés ... Cours C-shell « Le langage de commande du système Unix ».

Initiation à la programmation shell : Partiel

Initiation à la programmation shell : Partiel

15 Avril 2019 - Durée: 3 heures

Polycopié, notes de cours et de TP autorisés

À lire :

Les exercices et les questions son tde difficulté v ariableet en général non croissan te.Il

est conseillé de parcourir l"énoncé avant de composer. Les exercices peuvent être traités

dans l"ordre de votre choix.

Il est toujours p ossiblede sauter des questions.

Le soin, la clarté et la lisibilité seron tpris en compte l orsde la correction. P ourcertai nesquestions, une rép onsepartielle ou incomplète pourraêtre prise en compte lors de la correction.

Le b arèmeest ind icatifet p ourraêtre mo difié.Pour l"instant, le total des points est 104,

et votre total sera divisé par 5 pour obtenir une note sur 20.

Exercice 1 :

37pointsidees_geniales.txt

.bashrc

Makefile

main.c ensble.c ensble.h~ shellprog2 projetdocstp1 idees.txt enonce.pdf todo autoprog2 poly.pdf manuel de bash.pdf

Makefile

main.c avion.c

avion.hDans l"arborescence représentée dans ci-dessus, les répertoires sont écrits engraset les fichiers

qui ne sont pas des répertoires sont écrits enmono-châsse, dans des rectangles. Le répertoire

~est votre répertoire personnel. Vous commencez cette grande aventure dans votre répertoire personnel. Pour chacune des questions suivantes, vous écrirez sur la copie la ou les commande(s) que vous devez entrer pour réaliser les actions demandées.

1.Démarrage d"un TP en C/10

L1 Informatique - 2018 - 20191Université Paris 13

Initiation à la programmation shell : Partiel

a) Créer le r épertoiretp2dansprog2et s"y déplacer. Dans ce répertoire, créer en une seule commande les fichiers (vides pour l"instant)main.c,scooter.cetscooter.h.

Correction :mkdir prog2/tp2

cd p rog2/tp2 touch main.c scooter.c scooter.h b) On rapp elleque v otrerép ertoirecouran te stle sous-rép ertoiretp2du répertoireprog2. Quels sont les chemins relatifs et absolus du fichierMakefilesitué danstp1? Correction :Le chemin relatif est../tp1/Makefile. Le chemin absolu est~/prog2/tp1/←?

Makefile

c)

Copier ce fi chierdans le rép ertoiretp2.

Correction :On peut utiliser le chemin relatif ou absolu, donccp ../tp1/Makefile . o u c p prog2 tp1

Makefile

d) Dans cette copie du fic hier,remplacer toutes les o ccurencesdu mot " a vion» par le mot " scooter ». Correction :sed?s/avion/scooter/g?Makefile > tmpmv tmp Makefile On peut utiliser aussi l"option-ide GNU pour remplacer directement dans le fichier, ... e) Écrire (a vecune ou plusieurs commandes), dans le fic hierscooter.hdu répertoiretp2 les lignes suivantes :#ifndefS COOTER_H include

S COOTER_H

endif

Correction :Plein de possibilités, plusieursecho,printf,cat(avec ou sans here-document).echo?#ifndefS COOTER_H?>> scooter.hecho?#defineS COOTER_H?>> scooter.hecho?#endif?>> scooter.hcat> >s cooter.h< ifndef

S COOTER_H

include

S COOTER_H

endif FIN printf?#ifndefS COOTER_H\n#includeS COOTER_H\n#endif\n?>>←?scooter.h L1 Informatique - 2018 - 20192Université Paris 13

Initiation à la programmation shell : Partiel

à la place deprintf(mais moins portable), il y aecho-e de GNU qui permet d"interpréter \net sans doute encore 1000 possibilités...

2.Recherches dans le répertoiretp1/7

a) Se déplacer dans le rép ertoiretp1(depuistp2).

Correction :cd../tp1

b)

Lister les fic hiersde c erép ertoire.

Correction :ls#ou ls - l,ls - la,ou m êmeecho * c) Affic herseulemen tles lignes des fic hiersde ce r épertoirequi con tiennentla c haînede caractèreavion_creer.

Correction :grep?avion_creer?*

d) Affic herseuleme ntles lignes du fic hieravion.hqui commencent par#

Correction :grep?^#?avion.h

e) Affic herseulemen tles lignes de avion.hqui ne sont pas vides. Correction :grep?.?avion.hougrep -v?^$?avion.hou ... f)

Compter les lignes du fic hieravion.h.

Correction :wc -l avion.h

g)

Compter les lignes non vides du fic hieravion.h.

Correction :grep?.?avion.h | wc -l

3.Un peu de rangement!/5

a) Créer l erép ertoiretp_ensemblecomme sous-répertoire deprog2, puis y déplacer (en une seule commande) les fichiersMakefile,main.c,ensble.cetensble.hdu répertoire~.

Correction :mkdir ~/prog2/tp_ensemble

mv ~/Makefile ~/main.c ~/ensemble.c ~/ensemble.h ~/prog2/←?tp_ensemble b) Renommer le ré pertoiretp2pour l"appelertp_scooter(toujours dansprog2).

Correction :cdprog2 ; mv tp2 tp_scooter

c) Copier (toujours dans prog2) le répertoiretp1en nommant la copietp_avion.

Correction :cp -R tp1 tp_avion

d) Supprimer le rép ertoiretp1(et tout ce qu"il contient).

Correction :rm -r tp1

4.Permissions/6

a) Rendre les fic hierstodoetautoprog2du répertoireprojetexécutables par vous. Correction :chmod u+x ~/shell/projet/todo ~/shell/projet/autoprog2 b) Sur le fic hieridees_geniales.txt, enlever toutes les permissions du groupe et des autres utilisateurs. Correction :chmod og= ~/idees_geniales.txtet 1000 autres possibilités c) Supprimer, p ourtout le monde, la p ermissiond"écrire sur le fic hierautoprog2.

Correction :chmod a-w ~/shell/projet/autoprog2

L1 Informatique - 2018 - 20193Université Paris 13

Initiation à la programmation shell : Partiel

d) Que faire p ours"ass urerque p ersonne(à part ro ot)ne pu issesupprimer le fic hiertodo?

Avec quelle commande?

Correction :Il faut enlever à tous la permissionwaurépertoirequi le contient.chmod a-←? w ~/shell/projet/ e) On a tap édans le te rminalla command esuiv ante,a vecle résultat suiv ant(le $repré- sente l"invite de commande) :$u mask 022
Si lefichier normalidees_pourries.txtet le répertoirewebsont créés dans votre répertoire personnel, quelles sont les permissions qui leur sont associées? Correction :Ce masque enlève les droits d"écriture au groupe et aux autres. Pour le fichier normal, créé au départ sans la permissionx, ça donne les permissionsrw-r--r--et pour le répertoire, créé avec la permissionxavant d"appliquer le masque, ça donnerwxr-xr-x.

5.Documents/6

a) Le programme evincepermet d"ouvrir les fichierspdf. Lancer ce programmeen arrière-planpour ouvrir le fichierpoly.pdf.

Correction :evince ~/shell/docs/poly.pdf &

b)

Affic herle PID de c epro cessus.

Correction :echo$!

c) Mettre fin à ce pro cessus(ou, au pire, donner une métho dep ourle faire en utili sant seulement le terminal).

Correction :kill$!

d) Ouvrir, cette fois au premier plan, toujours a vecevince, le fichiermanuel de bash.pdf. Correction :evince ~/shell/docs/"manuelde bash .pdf" e) Mettre ce pro cessusen arrière-plan (ou, au pire, donner une métho dep ourl efaire en utilisant seulement le terminal). Correction :Ctrl-zpuisbg, ou à la place debg, aller chercher le PID du processus, envoyer

SIGTSTPaveckill, etc

6.Pot-pourri/3

a) Quelle est la p articularitédu fic hier.bashrc? Comment le lister avec la commande ls? Correction :C"est un fichier caché car son nom commence par un point. Pour le lister, on peut utiliserls -a b) Commen taffic herle nom de tous les fic hierspdfdans cette arborescence?

Correction :find ~ -name" *.pdf"

c) Commen taffic herle nom de tous les rép ertoiresdans cette arb orescence?

Correction :find ~ -typed

Exercice 2 :

17points

1.Voici une partie de la sortie d"une commandels -ld *:

L1 Informatique - 2018 - 20194Université Paris 13

Initiation à la programmation shell : Partiel

-rw-r--r-- 2 rob genies 271 17 janv. 12:35 a_faire.txt -rwx--x--x 1 rob genies 872 9 fevr. 23:09 ranger.sh drwxr -xr-x 2 rob genies 4096 27 mars 11:03 solutions/ lrwxrwxrwx 1 rob genies 10 8 dece. 07:07 urgent -> ../attention a) Que signifien tresp ectivement-,detlau tout début des lignes ci-dessus? Correction :fichier normal, répertoire et lien symbolique. b) À quoi corresp ondentles mots robetgeniespour ces fichiers? Correction :Ce sont respectivement le propriétaire et le groupe propriétaire des fichiers. c) Que signifien tles p ermissionsasso ciéesà ranger.sh? Les écrire en représentation octale. Correction :Tous peuvent exécuter ce fichier. Rob peut en plus le lire et le modifier. En octal, ça fait711 d) À quoi c orrespondle nom brequi suit genies? La date et l"heure qui suivent ce nombre? Correction :C"est la taille du fichier en nombre d"octets. La date qui suit est la date de dernière modification. e) Que signifie p ourle fic hiera_faire.txtle premier nombre2? Correction :C"est le nombre de liens physiques vers ce fichier. f)

Qu"indique la c haîneurgent -> ../attention?

Correction :Le fichierurgentest un lien symbolique qui pointe vers le fichierattention situé dans son répertoire parent.

2.Expliquer en une phrase ce que fait chacune des commandes suivantes :

a)ls *.???

Correction :Lister, dans le répertoire courant, les fichiers (non cachés) dont le nom se termine

par un point, puis 3 caractères. b)kill-SIGCONT 38470 Correction :Demander au processus de PID 38470 de reprendre son exécution. c)ls -l /etc | wc -l Correction :Compter les fichiers (non cachés) du répertoire/etc d)cat~/tata/c.txt >> ~/toto/a.txt Correction :Mettre le contenu du fichierc.txt(situé dans le sous-répertoiretatadu ré-

pertoire personnel) à la fin du fichiera.txt(situé dans le sous-répertoiretotodu répertoire

personnel). e)cp /var/log/[b-m]?*[!3-9] /tmp Correction :Copier tous les fichiers du répertoire/var/logdont le nom : commence par une lettre min usculeen trebetm; est suivi d"un caractère quelconque ; se termine par un caractère qui n"est pas un c hiffreen tre3 et 9. f)ps-ef > psliste.txt Correction :Lister tous (option-e) les processus en cours, en format long (option-f) et mettre le résultat dans le fichierpsliste.txt L1 Informatique - 2018 - 20195Université Paris 13

Initiation à la programmation shell : Partiel

g)ps-ef | grep ^root Correction :Ne lister que les processus lancés parroot.

3.Donner une commande permettant de lister les fichiers du repertoire courant qui ont pour

extension.cou.het dont le nomcontientla chaîne de caractèreliste

Correction :ls *liste*.[ch]

Exercice 3 :

17points

On rappelle que la commandewc -cpermet d"afficherla taille en octets d"un fichier passé en arguments. En voici un exemple de sortie sur le fichierindex.html(encore une fois$représente l"invite de commande) :$ wc -c index.html

2628 index.html

On considère dans cet exercice le script (moyennement utile)taillessuivant :1#!/ bin/bash2

3repertoire=$14limite=100#taillel imitee nK o( kilooctets)5limite_octets=$(( 1024 * $limite ))6forf ichieri n" $repertoire"/*; d o7taille=$(wc -c" $fichier"| s ed?s/. *//?)8if[ $ taille- gt$ limite_octets] ; t hen9echo" Lef ichier$ fichierf aitp lusd e$ limiteK o! "10fi11done1.Expliquer à quoi sert la ligne 1 de ce script.

Correction :Elle sert à dire au système quel interpréteur doit lire ce script.

2.Expliquer ce que font les lignes 3 et 4 de ce script.

Correction :La ligne 2 sert à mettre le contenu du premier argument dans une variable appelée repertoire. La ligne 3 met la chaîne100dans une variable appeléelimite

3.Que va faire la ligne 5? À quoi sert la syntaxe$(( ))?

Correction :La ligne 5 sert à mettre le résultat du calcul de1024fois la valeur de la variable limite

dans la variablelimite_octet. La syntaxe$(( ))sert à dire au shell d"en interpréter le contenu

comme une expression arithmétique, de faire ce calcul et de remplacer toute la construction par le

résultat du calcul (expansion arithmétique).

4.À quoi sert la ligne 6?

Correction :Elle sert à boucler sur tous les fichiers (non cachés) du répertoire dont le nom est

$repertoire. À chaque itération, la variablefichierprend le nom d"un nouveau fichier du réper-

toire.

5.La ligne 7 sert à mettre la taille (en octets) du fichier nommé$fichierdans la variable

taille. Pour ce faire : L1 Informatique - 2018 - 20196Université Paris 13

Initiation à la programmation shell : Partiel

a)

À quoi sert la syn taxe$( )?

Correction :Elle sera remplacée par la sortie standard de la commande qui est à l"intérieur (substitution de commande). b)

À quoi sert le sym bole|?

Correction :C"est un pipe qui sert à faire de la sortie standard de la première comande l"entrée standard de la commande suivante. c)

Que fait la commande sed?s/.*// ??

Correction :Elle sert à supprimer tout ce qui suit le nombre dans la sortie de la commande wc -l.

6.Expliquer en détail la ligne 8.

Correction :Il y a une constructionifdont le corps ne sera exécuté que si la commande entreif et;sort avec un code de succès (0). La commande en question est une commandetestqui retourne0si le contenu detailleest supérieur au contenu delimite_octet.

7.Dans la ligne 9, que se passe-t-il si les guillemets anglais"" sont remplacés par des apos-

trophes?? ?

Correction :Alors les$sont protégés et l"expansion de variables n"a pas lieu. La chaîne est copiée

littéralement dans le terminal.

8.Que fait ce script?

Correction :Il sert à afficher le nom des fichiers du répertoire donné en paramètre dont la taille

dépasse100Ko.

9.Modifier le script de façon à ce qu"à la fin soit produit également

Correction :Correction globale de ces questions à la fin de l"exercice. un affic hagede la somme des tailles de tous les fichiers(non cachés du répertoire donné en argument); un affic hagede la somme des tailles des fi chiers(n oncac hésdu rép ertoiredonné en argument)dont la taille dépasse la limite.

Correction :#!/ bin/bash

if - ne1 ] ; t hen echo usage $ 0

R EPERTOIRE

> &2 exit 1 fi repertoire=$1 if ! [ - d $repertoire t hen echo L?argument$ 1n ?estp asu nr épertoire"> &2exit2 fi somme_tous=0 somme_gros=0 L1 Informatique - 2018 - 20197Université Paris 13

Initiation à la programmation shell : Partiel

limite=100#taillel imitee nK o( kilo-octet)limite_octets=$(( 1024 * $limite )) for f ichier i n $repertoire d o taille=$(wc -c $fichier s ed?s/. *//?)somme_tous=$(( $somme_tous + $taille )) if [ $ taille- gt$ limite_octets] ; t hen echo Le f ichier $ fichier f ait p lus d e $ limite K o somme_gros=$(( $somme_gros + $taille )) fi done echo Somme d es t ailles d es f ichiers d e $ repertoire $ somme_tous echo Somme d es t ailles d es f ichiers d e $ repertoire d ont l a t aille d

é←?passe"\

$limite K o $ somme_gros

Exercice 4 : Copier en toute sécurité

14points

Correction :La correction est globale, à la fin de l"exercice.

1.Créez la commandecopierqui permet de copier le contenu d"un fichier source dans un

fichier destination. La commande reçoit en arguments deux noms de fichiers : la source et la destination. Le script se termine avec un code de sortie d"erreur, et affiche un message d"erreur si l"une des conditions suivantes est réalisée : le nom bred"argumen tsest incorrect ; le fic hiersource n"existe pas ou n"est pas copiable (pas d"accès en lecture) ; le fic hiersource n"est pas un fic hierordinaire ; le fic hierdestination existe.

2.Modifiez votre script de manière à ce que, si le fichier destination existe, au lieu de se termi-

ner, votre script demande confirmation à l"utilisateur,à la manière del"exemple suivant :$ copier bonjour.c salut.c

Le fichier salut.c existe , l?écraser (o/n) ? o$ copier liste.c salut.c

Le fichier salut.c existe , l?écraser (o/n) ? n3.Enfin, modifiez votre script de manière à ce que, si l"utilisateur entre une réponse qui n"est

pasooun, la question lui soit reposée, jusqu"à ce que sa réponse soit valide.

Correction :#!/ bin/bash

if - ne2 ] ; t hen echo usage $ 0

S OURCE

D ESTINATION

> &2 exit 1 fi L1 Informatique - 2018 - 20198Université Paris 13

Initiation à la programmation shell : Partiel

src=$1 dest=$2 if ! [ - e $src ] | |! [ - r $src t hen echo le f ichier $ src n ?existep aso un ?estp asc opiable"> &2exit2 fi if ! [ - f $src t hen echo le f ichier $ src n ?estp asu nf ichiero rdinaire"> &2exit3 fi if [ - e $dest t hen reponse= while $reponse o $reponse n d o echo Le f ichier $ dest e xiste l ?écraser( o/n)? "readr eponse done if [ $ reponse= = o t hen cp $src $dest fi else cp $src $dest fi

Exercice 5 : Ranger

19points

Le but de cet exercice est de construire pas à pas un scriptrangerqui range les fichiers passés en arguments dans les sous-répertoiresimages,documentsouvideosdu répertoire de travail selon le principe suivant : les fic hiersdon tl"extension est .pdfsont rangés (déplacés) dansdocuments; les fic hiersdon tl"extension est .pngou.gifsont rangés dansimages; les fic hiersdon tl"extension est .aviou.movsont rangés dansvideos.

Correction :Correction à la fin de l"exercice.

1.Écrire le scriptrangerdans le cas où il n"a qu"un seul argument.

2.Le modifier pour qu"il accepte un nombre quelconque d"arguments.

3.Vérification des répertoires cible : modifier le script de manière à ce que si le répertoire

quotesdbs_dbs11.pdfusesText_17
[PDF] exercices statistiques 3ème

[PDF] exercices statistiques 3ème brevet

[PDF] exercices suites arithmétiques et géométriques terminale es

[PDF] exercices suites arithmétiques et géométriques terminale s

[PDF] exercices sur c'est et ce sont

[PDF] exercices sur ensemble de definition

[PDF] exercices sur ensembles de nombres

[PDF] exercices sur intervalle de confiance

[PDF] exercices sur la concentration molaire et massique

[PDF] exercices sur la concentration molaire et massique seconde

[PDF] exercices sur la forme canonique seconde pdf

[PDF] exercices sur la loi de beer lambert pdf

[PDF] exercices sur la loi des mailles

[PDF] exercices sur la loi des mailles et des noeuds

[PDF] exercices sur la loi des mailles pdf