Système DUT Informatique semestre 2. IUT de Villetaneuse PICARD GRAVEL Marie-Eve

Documents pareils
Sauvegarde sous MAC avec serveur Samba

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Environnements informatiques

Initiation à la programmation en Python

Chapitre 2 Devine mon nombre!

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Algorithmique et Programmation, IMA

1. Structure d'un programme FORTRAN 95

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Traitement de texte : Quelques rappels de quelques notions de base

1. Introduction Création d'une requête...2

La mémoire. Un ordinateur. L'octet. Le bit

TUTORIAL REUTERS. Utilisation de l'utilitaire de recherche Reuters

STAGE IREM 0- Premiers pas en Python

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Algorithmique avec Algobox

CORRECTION EXERCICES ALGORITHME 1

Live box et Nas Synology

TP1 - Prise en main de l environnement Unix.

Cours Informatique Master STEP

3IS - Système d'exploitation linux - Programmation système

Les chaînes de caractères

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions


Objet : Guide d'installation et de maintenance pour "My IC Phone 8082" connecté à un OmniPCX Office R810

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

1 TD 2 : Construction d'une chier Acrobat et envoi par

YAPBA M. Logiciel libre de suivi de vos comptes

Python Les fondamentaux du langage

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Les commandes relatives aux réseaux

Note de cours. Introduction à Excel 2007

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

TP1 : Initiation à l algorithmique (1 séance)

Table des matières Hakim Benameurlaine 1

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Recherche dans un tableau

Installation de la messagerie EMWAC IMS Sur Windows NT4 serveur ou Windows 2000 serveur

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Guide pour l Installation des Disques Durs SATA et Configuration RAID

TP 1. Prise en main du langage Python

Télécom Nancy Année

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

TP 1 Prise en main de l environnement Unix

Création d'un questionnaire (sondage)

ACTIVITÉ DE PROGRAMMATION

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Shell Bash Niveau débutant

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Outils pour la pratique

Introduction à MATLAB R

Microsoft Excel. Tableur

Créer votre propre modèle

Protocoles DHCP et DNS

Solutions du chapitre 4

Microsoft Excel Présentation du tableur Excel

Architecture de la plateforme SBC

I. MySQL : Serveur et SGBD

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

TP, première séquence d exercices.

Client windows Nagios Event Log

Programmation C++ (débutant)/instructions for, while et do...while

Fiche FOCUS. Les téléprocédures. Créer un espace abonné SANS certificat (accessible avec une adresse électronique / un mot de passe)

Le Client/Serveur avec Enterprise Miner version 4

Xubuntu Une alternative à Windows et à Ubuntu, (pour ceux qui ne veulent pas d'unity) : installer Xubuntu.

sshgate Patrick Guiran Chef de projet support

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Cours Programmation Système

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

SQL Limitations Mémoire

Atelier La notion de session utilisateur sous Linux

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Installer un domaine DNS

IFT Systèmes d exploitation - TP n 1-20%

Parcours FOAD Formation EXCEL 2010

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Programme awk------introduction rapide

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Comment faire pour créer ses propres pages html?

Bases de programmation. Cours 5. Structurer les données

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Manuel d Utilisateur - Logiciel ModAFi. Jonathan ANJOU - Maud EYZAT - Kévin NAVARRO

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Pack Evolix Serveur Mail Documentation d'utilisation

Introduction aux Systèmes et aux Réseaux

progecad NLM Guide de l'utilisateur

Cours d Informatique

Installation de Windows 2003 Serveur

PX8048 Convertisseur audio/vidéo VHS vers USB

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

Module : Informatique Générale 1. Les commandes MS-DOS

Transcription:

Système IUT de Villetaneuse

A - Apéritif Q1. Ecrire un chier shell prenant en paramètre deux entiers, qui en afche la somme. S il n y a pas deux paramètres, afcher un message d erreur. Q1.sh if [ $# -eq 2 ] echo $[ $1+$2 ] echo "Erreur : vous devez entrer deux paramètres. " Pour exécuter Q1.sh dans le terminal, il faut d abord penser à mettre les droits d exécution au chier avec «chmod u+x Q1.sh», puis on l exécute ainsi : «./Q1.sh param1 param2». On pouvait aussi écrire $(( $1+$2)) plutôt que $[ $1+$2 ]. Q2. Ecrire un script qui prend en paramètre des entiers et afche le plus grand. Q2.sh if [ $# -eq 3 ] PlusGrand=0 while [ $# -gt 0 ] if [ $1 -gt $PlusGrand ] PlusGrand=$1 shift 1 ne echo "Le plus grand nombre est : " $PlusGrand echo "Erreur : il fallait entrer trois paramètres sur la ligne de commande." Il faut remarquer la présence de l'itération grâce à shift 1. Si elle n'est pas placée à l'extérieur du second if, comme c'est le cas ici, l'itération n'a pas lieu au bon moment et on a droit à des boucles innies ou des bugs divers. Il faut également faire attention aux espaces autour du signe "=" ; il faut éviter d'en mettre sinon il y a des erreurs. 2

Q3. Ecrire un script qui prend en paramètre des entiers et afche le plus grand. Q3.sh nb=5 while [ $nb > 0 ] echo $nb nb=$[ $nb -1 ] ne Il était possible d'écrire nb=$(( $nb -1 )) mais ici encore, il fallait surtout faire attention à ne pas laisser d'espace autour du signe égal. L'espace à l'intérieur de la parenthèse semble ne pas gêner. Q4. Ecrire un script bash qui utilisera une instruction case pour effectuer des opérations arithmétiques : (+, -, x, / ). Q4.sh if [ $# -eq 3 ] case $2 in ( + ) echo $[ $1+$3 ] ;; ( - ) echo $[ $1-$3 ] ;; ( x ) echo $[ $1*$3 ] ;; ( / ) echo $[ $1/$3 ] ;; esac echo "Erreur : vous devez entrer trois paramètres : nb opérateur nb (ex : 3 + 2 ). " Avec case, on cherche si le second paramètre (qui est sensé être un opérateur), est d'une forme ou d'une autre. Selon le cas, il faut exécuter l'ordre qui est lié à l'opérateur trouvé. La syntaxe de case est très importante au niveau des ";;". Cette ponctuation est nécessaire pour le bon fonctionnement du script shell. 3

Q5. Ecrire un script qui listera : current_date, time, username, et current directory. Q5.sh echo " La date d'aujourd'hui est : " `date + %D` echo " Voici l heure qu'il est : " `date + %X` echo "L'utilisateur actuel est : " $USER echo "Le ssier que vous consultez actuellement est : " `pwd` Si on oublie de mettre les commandes entre `et`, l'afchage sera tel que l'on peut le lire ici, car les commandes n'auront pas été exécutées. L'option d'afchage "echo" aura pensé que nous voulions simplement afcher "date + %D" et non la date d'aujourd'hui. Q. Ecrire un script qui prend en paramètre un entier et afche l entier en ordre inverse (123 321). Q.sh if [ $# -eq 1 ] echo $1 rev echo Erreur : il faut entrer un unique paramètre! En fait, " rev" permet de mettre le premier paramètre positionnel à l'envers même s'il s'agit d'une chaine de caractère. En effet, on peut écrire "./Q.sh Marie" et on nous renvoie "eiram". 4

Q7. Ecrire un script qui prend en paramètre un entier et afche la somme des digits qui le composent (123 1+2+3=). Q7.sh for (( i=0 ; i<${#1} ; i=$[i+1] )) car=${1:$i:1} if [ "$car" \< ":" -a "$car" \> "/" ] if [ $i -eq $[${#1}-1] ] echo -n "$car" echo -n "$car+" somme=$[somme+$[car]] echo "$car : n'est pas un digit" exit 0 ne echo "=$somme" Pour i, allant de 0 jusqu'à la taille du paramètre, on range les caractères du paramètre dans "somme" et on additionne le tout. On afche les caractères puis le résultat à la n. "${#1}" nous nne la longueur de la chaine $1. Q8. Quelle commande Unix vous permet de réaliser des opérations arithmétiques sur les réels? echo "3.3 + 4.4" bc Il est également possible d'écrire : echo {3.3+4.4} bc Q9. Comment calculer 5.12+2.5 à partir du prompt Linux? Q9.sh echo 5.12 + 2.5 bc 5

Q10. Comment réaliser dans un shell un calcul sur des réels? Par exemple, on veut a=5., b=8.7, c=a+b. Q10.sh if [ $# -eq 2 ] a=$1 b=$2 c=`echo {$a + $b} bc` echo $c echo Erreur : il faut entrer deux paramètres! La difculté est de trouver comment exprimer le calcul que l'on it faire dans "c". Le plus simple était de faire une commande en utilisant les nnées des questions 8 et 9. On sait que echo {x+y} bc renvoie le résultat d'un tel calcul, alors autant en proter et l'utiliser. Q11. Ecrire un script qui détermine si un chier nné en paramètre existe. Q11.sh if [ $# -eq 1 ] if [ -a $1 ] echo "Le nom de chier nné fait référence a un chier existant." echo "Le nom de chier nné ne fait pas référence a un chier existant." echo "Erreur : il faut un unique paramètre sur la ligne de commande." Ici, l'erreur à éviter était d'écrire : if [ $1 -a ] car cela n'a pas de sens.

Q12. Ecrire un script qui détermine si $1 contient «*». Si oui, «symbol is not required», sinon l ajouter à $1. Q12.sh trouve=0 for (( i=0 ; i<${#1} ; i=$[i+1] )) if [ "${1:i:1}" == '*' ] trouve=$[ $trouve+1 ] trouve=$trouve ne if [ $trouve -gt 0 ] echo "Symbol is not required." echo ${1}/\* Dans cet exercice, il faut parcourir $1 à la recherche du caractère '*'. On stocke les réponses positives dans une variable $trouve initialisée a la valeur 0. Si à l'issue du parcours, $trouve vaut plus de 0, alors le caractère '*' a été trouvé au moins une fois. Ainsi, on afche "Symbol is not required.". Si, au contraire, aucun caractère '*' n'a été trouvé lors du parcours de $1, on afche $1+*. Q13. Ecrire un script qui afche le contenu d'un chier de la ligne $1 à la ligne $2. Q13.sh if [ $# -eq 3 ] tail -n +$1 $3 head -n $2 echo "Error : we need 3 arguments. For example : nb nb lename." Ici, il fallait comprendre que pour saisir un texte de la ligne 5 à la ligne 9, il faut d'abord saisir les lignes 5 et + avec un "tail", puis limiter les lignes à 9 avec un "head". Et il ne fallait pas oublier "-n" pour ornner le tri sinon, il y a des erreurs. 7

Q14. Ecrire un script qui afche les options (de la forme -c, -d, -e) passées sur la ligne de commande. Q14.sh if [ $# -eq 1 ] case $1 in ( -c ) echo " -c clear the screen " ;; ( -d ) echo " -d show list of les in current working directory" ;; ( -e ) echo " -e {editor} start this {editor} if installed " ;; esac echo "Error : we need 1 argument. For example: -c, -d or -e" J'ai modié la question, car elle nécessitait des connaissances que je n'ai pas pour l'instant. J'ai quand même essayé de faire un script qui fait des recherches sur la ligne de commande par rapport à la question nnée. Q15. Ecrire un script que vous insérerez dans votre chier.bash_prole. Il afchera "Good Morning", "Good Afternoon" et "Good Evening" selon l'heure. Q15.sh realtime=`date +%X` time=`date +%X cut -d ':' -f 1` if [ $time -lt 12 ] tell="good Morning" elif [ $time -gt 12 -a $time -le 1 ] tell="good Afternoon" tell="good Evening" echo "$tell $USER, it is $realtime" En premier lieu, il faut récupérer l'heure. Ensuite, selon l'heure, on peut mettre en place trois possibilités dans une variable que l'on afche à la n selon le cas. 8

Q1. Ecrire un script qui afche le message "Hello World" en gras, clignotant, et de différentes couleurs en utilisant la commande "echo". Q1.sh echo -e "\033[1m Hello World" echo -e "\033[5m Hello World" echo -e "\033[33m Hello World" echo -e "\033[34m Hello World" echo -e "\033[31m Hello World" echo -e "\033[35m Hello World" echo -e "\033[40m Hello World" echo -e "\033[31m Hello World" echo -e "\033[35m Hello World" echo -e "\033[34m Hello World" echo -e "\033[0m Hello World" C'est "\033[Xm" qui fait varier les effets de l'afchage du texte avec echo. Q17. Ecrire un script qui implémente un processus en arrière plan qui afche continuellement l'heure courante. Q17.sh J'ignore comment faire. 9

Q18. Ecrire un script qui simule un menu permettant de réaliser les actions nnées. cf Q18 (http://www.lipn.fr/~cerin/se/exercicesshell.html ). Q18.sh La question n'est pas claire. Je ne comprends pas ce qui est demandé. Q19. Ecrire un script qui permet d'afcher différentes informations sur le système. Q19.sh echo " 1) Currently logged user : $USER, logname : $LOGNAME " echo " 2) Your current shell : $SHELL" echo " 3) Your home directory : $HOME " echo " 4) Your Operating system type : $OSTYPE " echo " 5) Your current path setting : $PATH " echo " ) Your current working directory : " `pwd`.. 1 0

Q20. Ecrire un script permettant de réaliser à l'écran, un losange avec des points comme suit : sur la première ligne, il y a 1 point. Sur la seconde ligne il y a 2 points,, sur la ligne la plus grande il y a $1 points. Puis le nombre de points décroit jusqu'à 1 pour former le losange. Q20.sh for (( i=0 ; i<=$1 ; i=$[i+1] )) for (( j=$1 ; j>=i ; j=$[j-1] )) echo -n " " ne for (( k=1 ; k<=i ; k=$[k+1] )) echo -n "." ne echo "" ne for (( i=$1 ; i>=1 ; i=$[i-1] )) for (( j=i ; j<=i$1 ; j=$[j+1] )) echo -n " " ne for (( k=1 ; k<=i ; k=$[k+1] )) echo -n "." ne echo "" ne On commence par créer un premier triangle (grâce a des boucles for imbriquées) nt le nombre de ligne dépend de l'argument nné sur la ligne de commande. Une fois le premier triangle créé, on utilise les nouvelles valeurs de i et j pour créer son uble inversé de manière à faire apparaitre un losange. La difculté, c'est de gérer les espaces dans l'afchage des points. 1 1

Q21. Ecrire un script qui converti un chier de majuscule à minuscule et vice versa selon ce que l'on passe sur la ligne de commande. 1 2