:: Enseignements :: Licence :: L2 :: 2008-2009 :: Système ::
[LOGO]

Shell Unix


Exercice 1 - Navigation dans les répertoires

A l'aide de la commande ls déterminer :
  • le contenu de votre répertoire courant ;
  • réaliser l'affichage avec un nom de fichier par ligne (man ls) ;
  • afficher les fichiers cachés ;
  • afficher uniquement les fichiers se terminant pas .c.

Expliquer ce que fait la commande suivante :
ls -l | grep -v '^d'

Exercice 2 - Statistiques sur un fichier

A l'aide de la commande wc déterminer :
  • le nombre de lignes de votre projet du semestre précédent ;
  • la longueur de la plus longue ligne ;
  • le nombre de mots (uniquement).

A l'aide de la commande file déterminer :
  • le type du fichier (texte, image, etc.) ;
  • le format des données dans le cas de fichiers multimédias ;
  • Le système d'encodage dans le cas de fichiers de texte.

Exercice 3 - Chaînage de commandes

Il est possible grâce à un tube (symbôle |) de chaîner plusieurs commandes. Déterminer avec les commandes ls et wc le nombre d'étudiants appartenant à la même filière que vous (utiliser le répertoire /home/).

Exercice 4 - Variables

Taper les commandes suivantes :
  • 					VAR="ls -l | grep -v '^d'"
    					echo $VAR
  • 					VAR=`ls -l | grep -v '^d'`
    					echo $VAR
  • 					VAR='ls -l | grep -v '^d''
    					echo $VAR
  • 					VAR=$(ls -l | grep -v '^d')
    					echo $VAR
Expliquer le résultat de ces différentes commandes.

Exercice 5 - Affichage des arguments d'un script

Ecrire un script qui affiche :
  • le premier argument passé au script ;
  • tous les arguments passés au script.

Exercice 6 - Récupération d'informations sur votre système

Ecrire un script qui à l'aide de la commande cat détermine les informations suivantes (indication : utiliser les fichiers du répertoire /proc/) :
  • fréquence de votre processeur ;
  • quantité de mémoire vive.

Exercice 7 - Table de multiplication

Ecrire un script qui affiche les tables de multiplication. Lorsque le script est lancé avec, par exemple, les arguments 5 et 10, il affichera le résultat suivant :
0 x 5 = 0
1 x 5 = 1
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50

Exercice 8 - Liste des sous répertoires

Ecrire (sans utiliser find) un script qui affiche les noms de tous les sous-répertoires accessibles à partir d'un répertoire passé en argument du script.

Exercice 9 - Lecture sur l'entrée standard

Ecrire un script qui permet de saisir un nom et un prénom, puis les affiche en sens inverse. Pour se faire, utiliser la commande read.

Exercice 10 - Exercice conditionnel

Ecrire un script qui affiche si vous êtes :
  • à la racine de votre répertoire personnel ;
  • dans le répertoire /etc ;
  • dans le répertoire /bin ;
  • etc.

Les if en cascade ne sont pas toujours très lisibles, surtout lorsqu'il existe plusieurs conditions très similaires. Pallier à ce problème de lisibilité en utilisant l'instruction case.

Exercice 11 - While ou until

Ecrire un script qui teste si un mot de passe saisi par l'utilisateur correspond au mot de passe spécifié « en clair » dans votre script. Utiliser tout d'abord l'instruction while puis l'instruction until. Quelle différence existe-t-il entre ces deux commandes ?

Exercice 12 - Taille d'un répertoire

Ecrire un script size-rep.sh qui permet de connaître la taille d'un répertoire (c'est-à-dire la somme de la taille de tous ses fichiers) passé en argument.

Bonus : inclure la taille de tous les sous-répertoires dans ce calcul.

Exercice 13 - QCM

Ecrire un script permettant de répondre à un formulaire à choix multiples. Malheureusement, de nombreux utilisateurs vont faire des fautes de frappes... Pour éviter de devoir réaliser de nombreux tests bien souvent illisibles, utiliser la commande select.

Exercice 14 - Un petit jeu

Ecrire un script qui permet de dire à l'utilisateur s'il est proche (brulant), éloigné (gelé), etc. d'un nombre mystère.

Exercice 15 - La commande find

Utiliser la commande find pour retrouver tous les fichiers de nom a.out, tous les fichiers dont le nom se termine par ~ et tous ceux dont le nom commence par #.

Ecrire un script clean.sh qui supprime tous les fichiers trouvés avec la commande find précédente. Attention : on n'utilisera pas le symbole | pour effectuer cette action, mais uniquement les paramètres de la commande find.

Exercice 16 - Variables d'environnements

  • afficher toutes les variables d'environnements ;
  • afficher toutes les variables d'environnements dont les valeurs associées contiennent le mot fr ;
  • écrire un script qui demande à l'utilisateur sa nationalité (on se limitera à anglais et au français dans les résultats) et qui affiche le résultat entré par l'utilisateur ;
  • modifier les variables d'environnements obtenues précédemment en fonction du résultat entré par l'utilisateur.

Exercice 17 - Bonus : Le bashrc

A la racine de votre compte, ouvrir le fichier .bashrc. Ajouter des raccourcis qui permettent d'exécuter les commandes size-rep.sh et clean.sh quel que soit votre répertoire courant, en tapant simplement les commandes size-rep et clean.

Exercice 18 - Bonus : Session X

A partir du mode console (ctrl+Alt+F?), ouvrez une nouvelle session X. Pour se faire tapez la commande X :3&. Vous pouvez maintenant lancer un gestionnaire de fenêtre ou un terminal dans cette nouvelle session.

Exercice 19 - kill by name

A l'aide de la commande ps qui affiche la liste des processus, récupérer à l'aide des commandes grep et cut l'identifiant de tous les processus vous appartenant et dont le nom est passé en argument, puis les terminer à l'aide de la commande kill.

Exercice 20 - Compression de projets

Ecrire une commande qui à l'aide des commandes find et zip archive dans un fichier .zip uniquement les fichiers Makefile, .c et .h qui constituent un projet. Ajouter la possibilité de choisir la commande tar à la place de zip.