Exercices (ligne de commande)
Transcription
Exercices (ligne de commande)
EC521 – Remise à niveau Informatique – La ligne de commande Jean-Yves Didier 1 Utilisation des méta-caractères Soit un répertoire contenant les fichiers suivants : f1.c f2.c f3.f f4.c f5.f f10.a a.out e.c t.f Utiliser les méta-caractères de substitution (wildcards) pour lister les fichiers suivants (on recherchera l’écriture la plus concise possible) : – Les fichiers fortran (extension .f) ; – Les fichiers C (extension .c) et fortran ; – Les fichiers commençant par la lettre f ; – Les fichiers C commençant par la lettre f ; – Les fichiers dont le nom contient un chiffre avant ’.’ ; – Les fichiers dont le second caractère contient un chiffre ; – Les fichiers dont le second caractère est un ’.’. 2 Manipulation d’arborescence de fichiers Donner une suite de commandes qui permettent de faire passer l’arborescence de user1 de l’étape 1 à l’étape 2. On suppose que le répertoire courant est user1. user1 | |-- bin | | | |-- a.out user1 | |-- f2 | | |-- bin |-- src |-- src | | | | |-- c |-- c | | | | | | | |-- f1.c | |-- f1.c | | | |-- f2.c | |-- c++ | | | |-- c++ | |-- f2.cpp | |-- web |-- f2.cpp | |-- f3.cpp |-- ii21-unix.ps 1 Reprenons le répertoire à l’étape 2, le répertoire courant est à nouveau user1. Tracer l’arborescence qui résulte après l’exécution des commandes suivantes : $ $ $ $ mv rm mv cc 3 src/c/f1.c src -r src/c src/c++/f2.cpp src src/f1.c -o bin/f1 Commandes composites 3.1 Interprétation de commandes Donner la signification des commandes suivantes : $ $ $ $ sort f.c | head grep printf f.c | wc -l grep printf f.c > sortie cat /etc/passwd | grep user1 3.2 Ecriture de commandes Ecrire les commandes qui permettent de : 1. savoir si l’utilisateur user1 est connecté ; 2. afficher le nombre d’utilisateurs du système ; 3. afficher la liste des utilisateurs par ordre alphabétique ; 4. connaı̂tre le nombre de processus appartenant à user1 ; 5. connaı̂tre le nombre de processus appartenant à root ; 6. enregistrer dans le fichier fuser1 la date et l’ensemble des fichiers de user1 ; 7. affiche l’ensemble des processus dont vous n’êtes pas propriétaire (votre nom d’utilisateur se trouvant dans la variable d’environnement $USER ; 8. lancer la commande sleep en arrière plan pendant 5 minutes ; 9. afficher uniquement le nom du port TTY courant (terminal) (sans utiliser la commande ”tty”) ; 10. rechercher à partir de votre répertoire HOME, les fichiers nommés ”core” ou ”a.out” et les supprimer (à l’aide de la commande find). 4 Les scripts shell 4.1 Compréhension de script Soit le script suivant : #!/bin/sh len=0 for i in $*; do lenf=‘wc -l $i‘ len=$( len + lenf ) done echo len 2 1. Quelle sont les erreurs potentielles de syntaxe dans ce script (maximum 3) ? 2. En une phrase ou deux, que fait ce script ? 3. Comment modifier ce script pour que, lorsqu’il n’y a aucun paramètre passé, les opérations s’appliquent sur les fichiers du répertoire courant ? Écrire le script modifié. 4.2 Scripts élémentaires Exercice 1 Écrire un script shell qui réalise l’affichage de tous les arguments de la ligne de commande. Écrire une variante à l’aide de for et une variante à l’aide de while. Exercice 2 Écrire un script shell qui additionne tous les arguments acquis à partir de la ligne de commande. Exercice 3 Écrire un script shell qui réalise la copie d’un fichier sous plusieurs répertoires, utiles pour l’administrateur. Les répertoires file1 et file2 sont supposés exister. Dans le cas contraire, le fichier est dupliqué dans des fichiers ordinaires file1 et file2. Exercice 4 Écrire un script shell qui réalise l’affichage d’un compte à rebours. Exercice 5 Écrire un script shell qui renomme tous les fichiers totoXY.txt (où X et Y sont des chiffres) en tata0XY.txt. Exercice 6 Écrire un script reprenant l’exercice 5 en le paramétrant. Le script prendra en argument : – Le préfixe du fichier d’entrée ; – Le préfixe du fichier de sortie ; – L’extension du fichier ; – Le nombre de chiffres en entrée ; – Le nombre de chiffres en sortie. Dans le cas où les arguments ne sont pas renseignés, vous devrez leur donner des valeurs par défaut telles que ce script se comporte comme à l’exercice 5. Exercice 7 Écrire un script prenant en paramètre un nombre qui affiche un triangle à la console. Le résultat de l’éxécution de votre script devrait ressembler à ceci : $./monscript 5 * ** *** **** ***** 3 Exercice 8 Tout d’abord, écrire un script affichant uniquement le nom des fichiers exécutables dans le répertoire courant. Puis, modifier ce script pour qu’il prenne un paramètre ayant pour valeurs possibles : -x si l’on veut obtenir la liste des fichiers exécutables du répertoire courant ; -d si l’on veut obtenir des répertoires ; -r si l’on veut obtenir la liste des fichiers lisibles ; -w si l’on veut obtenir la liste des fichiers modifiables. 4.3 Écriture d’un script complexe Soit un fichier annuaire se présentant sous la forme suivante : Bill Fairbanks:20070002 Alex Trevelyan:20070006 James Bond:20070007 Étape 1 Écrire un script dans lequel on trouvera une fonction recherche qui : – Prend en paramètre un nom ; – Vérifie si ce nom est présent ou non dans un fichier nommé annuaire. Étape 2 Compléter le script précédent en ajoutant une fonction ajoute qui : – Ajoute dans le fichier annuaire un ligne comprenant : un nom et un numéro de téléphone passés en paramètres de la fonction ; – Trie alphabétiquement le fichier annuaire. Étape 3 Compléter le script en ajoutant une fonction supprime qui supprime de l’annuaire un nom passé en paramètre de la fonction. Étape 4 Compléter le script en ajoutant une fonction affiche qui réalise l’affichage du fichier annuaire. Étape 5 Terminer le script en ajoutant les instructions principales permettant de créer un menu pour gérer un annuaire. Ce menu comprendra des options pour : – Rechercher un nom dans l’annuaire ; – Ajouter une entrée à l’annuaire ; – Supprime une entrée de l’annuaire ; – Affiche la totalité de l’annuaire. D’autres ressources sont disponibles sur la plate-forme emedia : 4