L3 Info UFR Sciences&Techniques I5TC1
TP prise en main d’Unix et programmation shell
Exercice 1- Les commandes
i) Tester les diff´erentes commandes d’aide: man, whatis, apropos, info. Essayer man man.
ii) Tester les commandeshostname, logname, who, tty, date, cal, echo.
iii) Rechercher une commande qui nettoie l’´ecran
Exercice 2- Le bash Apr`es avoir lanc´e l’interpr´eteur de commande bash,
i) tester les commandes d’´edition de ligne de bash: faire afficher le calendrier de l’ann´ee courante, puis utiliser l’historique (fl`eches haut et bas) et l’´edition de ligne (C-a, C-e, C-d, C-b, C-f ou fl`eches droit et gauche et touche DEL) pour faire successivement afficher les calendriers des mois de janvier, d´ecembre et de f´evrier de l’ann´ee courante
ii) essayer la recherche avec C-r
iii) essayer les m´ecanismes de compl´etion debash (C-i, M-?). Quelle est la diff´erence entre les deux?
Exercice 3- Les comptes et fichiers
i) D´eterminer votre num´ero d’utilisateur (uid) sur le syst`eme ainsi que le nom et num´ero (gid) du groupe auquel vous appartenez.
ii) A l’aide des commandes cd, pwd et ls (avec les options i, l, d, a), dessiner le premier niveau de l’arborescence du syst`eme de fichiers.
iii) Quels sont les droits d’acc`es `a votre r´epertoire d’accueil?
iv) Tester les commandescat etmore sur un fichier assez volumineux.
v) Tester la commande file sur tous les fichiers d’un r´epertoire.
vi) Tester la commandewc sur un fichier, sur une liste de fichiers, sans fichiers.
vii) Tester les commandesmkdir, rmdir, rm, touch, mv, chmod.
viii) Tester les commandes findet grep.
Exercice 4- Redirections
i) Cr´eer un fichier contenant: le nom de la machine, la date et le r´epertoire courant, puis une ligne vide et le contenu du fichier/etc/services.
Exercice 5- Les filtres
i) Tester les filtres sort, tr, head, tail
1
ii) Utiliser head et tail avec des redirections de sortie pour cr´eer une version courte d’un fichier contenant les 50 premi`eres lignes puis les 50 derni`eres.
iii) Utiliser head ettail pour afficher une partie d’un fichier, par exemple de la ligne 25 `a la ligne 35.
Exercice 6- Les pipes A l’aide du pipe, ´ecrire des enchaˆınements de commandes pour i) tester si un utilisateur donn´e est pr´esent sur la machine
ii) faire afficher le r´esultat d’unls avec les noms de fichier en majuscules,
iii) faire afficher les chemins de la variable PATH s´epar´es par des ”-” et non par des ”:”.
Exercice 7- Les variables Attention, il peut y avoir plusieurs versions de la commande echo qui ne produisent pas toujours le mˆeme r´esultat. Pour savoir quelle est le chemin de la commande echoutilis´ee par votre shell, utiliser la commande which.
i) Utiliser les commandes set etenv pour visualiser les variables d’environnement ii) Tester echo ~. Comment peut-on faire afficher le caract`ere ~?
iii) Tester les m´ecanismes de substitution de variables, par exemple "echo $HOME" et
’echo $HOME’.
iv) Cr´eer un r´epertoire OUTILS et y mettre une commande de nom who qui affiche le message ”Machine en gr`eve”. Mettre ce r´epertoire OUTILS en d´ebut de votre variable PATH.
Expliquer ce qui se passe quand vous ex´ecutez la commande who.
v) Idem en pla¸cant le r´epertoire OUTILS `a la fin de la variable PATH.
Exercice 8- Port´ee des variables
i) Dans votre shell courant, positionner une variable (Ex: NB=80). Ecrire un script qui affiche la valeur de cette variable. Ex´ecuter ce script. Quel est la valeur affich´ee? pourquoi?
ii)Ecrire un script shell qui positionne une variable NB2 avec une valeur pass´´ ee en param`etre.
Lancer le script et demander au shell ensuite d’afficher la valeur de cette variable. Quelle valeur est affich´ee? Qu’en concluez-vous?
iii) Reprendre les deux questions pr´ec´edentes en lan¸cant les scripts localement (par . cmd ou source cmd). Les r´esultats sont-ils diff´erents? pourquoi?
iv) Idem en exportant les variables au moment du positionnement (export NB=80).
Exercice 9-
i) Ecrire un script qui affiche le minimum parmi une liste d’entiers pass´´ ee en argument.
ii) Ecrire un script qui affiche le mot le plus grand contenu dans un fichier dont le nom est´ pass´e en argument.
Annexe 1: Les expressions r´ eguli` eres
Utilis´ees par egrep, grep, expr, vi, sed, awk, ...
2
Servent `a ´etablir une correspondance caract`ere/caract`ere entre un motif et plusieurs chaˆınes sauf si un m´eta-caract`ere est rencontr´e dans le motif.
M´etacaract`eres:
^ pour debut de ligne
$ pour fin de ligne . remplace un caract`ere
* de 0 `a n fois le caract`ere la pr´ec´edant
[] ensemble de caract`eres utilisables; [^ ]=n´egation de [ ]
\ ignorer l’effet du caract`ere suivant
{} indiquer le nombre d’occurences (attention, pr´efix´ees par \) () donner des num´eros d’ordre aux mots
Exs:
a\{3,4\} d´efinit "aaa" ou "aaaa"
[^0-9] pas un chiffre
Annexe 2: L’´ editeur vi
vi est un ´editeur de texte en mode terminal sous Unix. Il est structur´e selon deux modes de fonctionnement: le mode texte, et le mode commande (accessible par la touche ESC). On le lance par la commandevi nom_fichier.
Quelques commandes utiles:
Quitter vi :
:wq sauvegarde dans le fichier appel´e et quitte :w nomfichier sauvegarde dans le fichier nomfichier :q! quitte sans sauvegarde
Ajouter, supprimer du texte
i ajoute le texte `a partir de la position du curseur A ajoute le texte `a partir de la fin de la ligne O cr´ee une nouvelle ligne
R ´ecrit par dessus le texte actuel r remplace le caract`ere courant
dd supprime la ligne courante, 4dd supprime 4 lignes `a partir de la ligne courante x supprime le caract`ere courant. 5x supprime 5 caract`eres
d$ supprime la fin de la ligne
~ bascule de minuscule en majuscule (et r´eciproquement) le caract`ere courant Couper, copier, coller :
ndd supprime n lignes `a partir de la ligne courante. Les lignes sont plac´ees dans le tampon nyy copie n lignes dans le tampon
p recopie le tampon en-dessous de la ligne courante P recopie le tampon au-dessus de la ligne courante Recherche, substitutions :
3
/texte recherche en avant de la chaine de caract`eres texte
?texte recherche en arri`ere de la chaine de caract`eres texte n nouvelle recherche en avant de la m^eme chaine
N idem mais en arri`ere
4