Exercices sur le système

Les droits

  1. Solution Changez les droits d'un fichier fic1 pour que tous ceux de votre groupe puissent écrire dedans.
  2. Solution Donnez en une seule ligne le droit d'exécution à tous les utilisateurs d'un fichier script qui n'a jusqu'alors que des droits standards (-rw-r--r--).
  3. Solution Le fichier toto a les droits suivants : -rwxr--r--. Modifiez-en les droits en une ligne de commande de sorte que le propriétaire n'ait plus que le droit de lecture.
  4. Solution Modifier les droits du fichier toto (-rwxr--r--) de sorte que le groupe et les autres utilisateurs aient les mêmes droits que le propriétaire.
  5. Solution Quelle option permet de modifier récursivement les droits d'un répertoire et des fichiers qu'il contient ?
  6. Solution Quelle option de mkdir permet de créer un répertoire en spécifiant les droits sur ce répertoire ?
  7. Solution Affichez et interprétez les droits de /usr/sbin/mount.

Les liens

  1. Solution Vous avez chez vous un répertoire tmp/ qui contient un fichier bidon. Créez un lien physique sur tmp/bidon appelé blo, dans votre répertoire d'accueil (HOME). Comparez les contenus de tmp/bidon et de blo. Que contient blo ?
  2. Solution Même question avec un lien symbolique.
  3. Solution Quelles sont les différences entre les liens durs et les liens symboliques ?
  4. Solution Dans quel cas ne peut-on pas faire de lien physique ? Que faut-il faire ?
  5. Solution Quel est l'effet de chmod sur un lien ?

Les processus

  1. Solution Affichez la liste des processus associés à votre terminal. Affichez la liste des processus dont vous êtes propriétaire. Recommencez en utilisant les options -l et -f. À quoi correspondent les colonnes PID et PPID ?
  2. Solution Lancez une commande longue en arrière plan. Quel est le comportement du processus associé lorsqu'il reçoit les signaux suivants :
    • sigkill (9)
    • sigstop (23)
    • sigcont (25)
  3. Solution Utilisez la commande nice pour lancer des commandes ayant une faible priorité.
  4. Solution Interprétez la hiérarchie des processus qui vous appartiennent.
  5. Solution La commande ps | wc compte deux processus en plus de ceux qui existent réellement lorsqu'on lance la commande. Pourquoi ?
  6. Solution Donner deux commandes pour reprendre l'exécution d'une instruction interrompue par un ^Z.

Programmation du shell

  1. Solution Faites deux scripts qui vous disent bonjour en affichant votre login («Bonjour, toto») :
    • Quand vous tapez saluer [votre-login]
    • Quand vous tapez juste saluer
  2. Solution Faire un script qui affiche la phrase : Le script [params] a [n] paramètre(s), que voici : [paramètres], en remplaçant les mots entre crochets par leur valeur; par exemple :
    chaland ~ $ params bla ble bli blo blu  
    La commande params a 5 paramètre(s), que voici : bla ble bli blo blu
    
  3. Solution Créez une commande qui, lorsqu'elle est appelée, renvoie le nombre d'arguments qui lui ont été fournis, ainsi que le premier de ces arguments.
  4. Solution Vous voulez écrire un script qui vous dit combien de personnes sont loguées sur une machine donnée; par exemple :
    drakkar ~ $ combien galion
    Il y a 5 personne(s) loguées sur galion en ce moment.
    drakkar ~ $
    
  5. Solution On veut remplacer le suffixe .htm d'un ensemble de fichiers en .html.
  6. Solution Un ensemble de noms de fichiers sont en majuscules. On veut tout basculer en minuscules.
  7. Solution Créez un script indice qui affiche l'indice de son premier argument dans la liste des arguments suivants. Par exemple,
    indice toto tata titi toto tutu
    

    renvoie l'indice de toto dans la liste tata titi toto tutu, c'est-à-dire 3.

  8. Solution On ne s'intéresse ici qu'à des fichiers contenant un mot par ligne. Écrire un script qui compte le nombre de mots contenant une des lettres «r», «s» ou «t», et parmi eux, ceux qui ont au moins deux telles lettres. On donnera aussi le nombre de mots ne contenant aucune voyelle. Cela donnera par exemple :
    Dans ce fichier,  vous avez :
    45 mots contenant «r», «s» ou «t», et parmi eux, 
    12 contiennent deux de ces lettres au moins.
    Il y a aussi 10 mots ne contenant aucune voyelle.
    
  9. Solution On veut chercher toutes les occurences des quatre éléments (terre, air, eau, feu) dans la première partie de Germinal.

    On veut aussi que le résultat soit placé dans un fichier, et que le résultat soit classé : toutes les lignes qui contiennent «air», puis toutes celles qui contiennent «eau», etc.

  10. Solution Chercher le mot «mine» dans les chapitres 3, 4 et 5 de la première partie de Germinal, et obtenir un fichier dans lequel figure le nombre d'occurences du mot dans les fichiers, avec le numéro des lignes.
  11. Solution Créez un script coupe qui prend trois arguments, le premier étant un nom de fichier et les deux autres des entiers l et l', et qui affiche les lignes comprises entre l et l' dans le fichier. Par exemple,
    coupe fic 4 8
    

    affichera les lignes 4 à 8 du fichier fic. Affichez des messages en cas d'erreur (nombre de paramètres incorrect, fichier inexistant, etc).

  12. Solution Pour transformer une arborescence en un seul fichier compressé, on utilise l'instruction
    tar zcvf nouveaunom fichiersaregrouper

    Avant d'envoyer des fichiers tar, on utilise uuencode.

    Écrivez une commande tarmail qui prend deux arguments, une adresse et un nom de répertoire, et qui envoie par mail le contenu de l'arborescence du répertoire précédée d'un message expliquant comment la récupérer.

    Note : pour récupérer un fichier uuencodé, on tape uudecode et pour reconstruire l'arborescence, on utilise tar zxvf fichier.

  13. Solution La commande suivante affiche le path complet de tous les fichiers finissant par ~ (tilde) dans la sous-arborescence du répertoire courant.
    find . -name '*~'
    

    Écrivez un script qui prend en argument un nom de répertoire et qui détruit tous les fichiers :

    1. Finissant par ~;
    2. Commençant et finissant par un dièse;
    3. S'appelant core;
    4. S'appelant a.out.
  14. Solution Écrire un script permettant d'appliquer divers filtres sur un fichier. Ce script est lancé avec un argument, qui doit être un nom de fichier appelé fichier de travail; dans le cas contraire, on affiche un message d'erreur. On attend ensuite une commande en mode interactif, qui peut être :
    • end : le programme s'arrête;
    • cherche : le programme lit alors une ligne au clavier contenant un motif et une autre contenant un nom de fichier, puis écrit dans ce fichier les lignes du fichier de travail contenant le motif;
    • tete oufin : le programme lit une ligne au clavier contenant un entier n puis une ligne contenant un nom de fichier. Il écrit ensuite les n premières (resp. dernières) lignes du fichier de travail dans le fichier précisé;
    • autre chose : message d'erreur.
Auteur : Anonyme, Joël Riou. Dernière modification : 2002-12-10 par Joël Riou.