unité libre: scripts sous unix/ TD No1
Objectifs du TD : commandes sur les fichiers et commandes de
base, processus, redirection et enchaînement de commandes.
Exercice 1: Dossiers, inodes
- Tapez les commandes ls, ls -l, ls -a,
et ls -rt. Combinez les options en tapant ls -lart.
Expliquez
les différentes sorties obtenues.
- Créez un sous-dossier Scripts-Unix dans votre dossier
personnel avec la commande "mkdir Scripts-Unix"
- Déplacez vous dans le dossier Scripts-Unix à l'aide
de la commande "cd Scripts-Unix" et créez y les trois dossiers
"Td1", "test", unTest.
- Dans quel ordre s'affiche les fichiers lorsqu'on les liste avec
la commande ls ? Une convention usuelle (non
respectée pour les dossiers systèmes) est que la
première lettre du
nom des dossiers soient une majuscule tandis que celle du nom des
fichiers est une minuscule. Qu''estce qui motive cette convention ?
- Tapez "cd Scripts-unix; cd Scripts-Unix; ls -la; cd ..; ls -l.
A quoi est du le message d'erreur que vous avez eu ? Que
représentent les dossiers '.' et '..' ? Utilisez la commande pwd
pour
connaitre le dossier courant.
Exercice 2: arborescence de fichier, notion de chemin
- Explorez le système. Regardez par exemple ce qui se
trouve à la
racine (dossier /).
- citez trois méthodes pour retourner dans votre dossier
personnel à l'aide de la commande cd et appliquez l'une d'entre
elle.
- on considère l'arborescence suivante:

- quel est le chemin absolu du dossier dudulle ?
- quel est le chemin de ce même dossier par rapport à
/etc ?
- quel est son chemin si vous êtes dans dudulle ?
- Donnez la suite de commandes nécessaires pour créer
l'arborescence suivante :

- Donnez la ou les commande(s) pour supprimer les dossiers Flan et
Pipo.
- Essayez de supprimer le dossier TravauxPratiques à l'aide
de rmdir. Que se passe-t-il ?
- Donnez la commande pour supprimer en une seule fois
TravauxPratiques et ses sous dossiers de TravauxPratiques.
Exercice 3: droits d'accès
Commande chmod
- Tapez ls -l dans le dossier Scripts-Unix/TD1.
Observez les
droits des fichiers et des dossiers. Ils sont classés dans
l'ordre {utilisateur, groupe, autres}, r étant le
droit de
lecture, w le droit d'écriture et x celui
d'exécution.
- créez un fichier nomme test_2.txt à l'aide de la
commande "touch test_2.txt"
- Tapez chmod -r test_2.txt; ls -l test_2.txt; more test_2.txt.
Restaurez l'ancien état avec chmod +r test_2.txt.
- Tapez chmod -w test_2.txt; ls -l test_2.txt. Essayez
de
modifier le fichier via l'éditeur de texte. Restaurez l'ancien
état
par chmod +w test_2.txt.
- Dupliquez le fichier test_2.txt, supprimez les droits
d'écriture et supprimez le fichier avec la commande rm.
Expliqez pourquoi les droits
d'écriture n'empêchent pas la suppression.
- Tapez chmod -w .; ls -l. Essayez de créez un
nouveau fichier
dans le dossier Test. Essayez de créez un nouveau
fichier dans le dossier Nouveau_Tst. Restaurez l'ancien
état par chmod +w .
- ràf: Tapez chmod -x Nouveau_Tst; cd Nouveau_Tst.
- Tapez less Nouveau_Tst/test_2.txt. Restaurez l'ancien
état
par chmod +x Nouveau_Tst.
- Comment sont gérés les droits sur les liens
physiques ?
- Créez à votre racine un dossier incoming
où n'importe
quel membre de votre groupe puisse y déposer des fichiers mais
sans pouvoir
lire le contenu ni du dossier ni des fichiers déposés.
Vous devez
disposer de tous les droits sur ce dossier et les utilisateurs qui
ne font pas partie de votre groupe ne doivent disposer d'aucun droit.
Commande umask
- La commande umask contrôle les droits par
défaut des
fichiers crées. Sa syntaxe est umask 0ooo avec 0ooo
un nombre
octal commençant par un 0 et comprenant les droits ugo
avec read=4, write=2, execute=1.
- Tapez umask pour voir votre masque courant.
- Tapez umask 124; mkdir T; ls -l.
- Créez et sauvegardez un nouveau fichier texte avec un
éditeur de
texte lancé depuis le shell. Observez ses droits.
- Créez et sauvegardez un nouveau fichier texte mais avec
un
éditeur de texte lancé depuis un autre shell.
Que dire du umask dans ce cas ?
- on souhaite que les fichiers créés aient par
défaut comme droits: RXWR-----. Quelle valeur de umask doit-on
prendre ?
- Restaurez votre ancien masque (probablement par umask 022).
exercice 4: hiérarchie de processus, recouvrement, commandes
internes/externes
- tapez "sleep 120". Quel est le PID de la commande sleep. Quel est
celui de son processus père ? Quand reprenez-vous la main ?
- tapez "exec sleep 120".Quel est le PID de la commande sleep. Quel
est celui de son processus père ? Expliquez les
différences avec la situation ci-dessus et ce qui se passe une
fois que la commande "sleep 120" est finie.
- affichez l'arborescence de vos processus
- notre shell est bash. Précisez pour chacune des commandes
suivantes si elles sont internes, externes et, dans ce cas, le chemin
absolu du fichier correspondant: : ls, exec, cd, w,time.
- tapez "sleep 600". Comment faites-vous depuis le shell de
lancement:
- reprendre la main en suspensant la commande
- relancer la commande suspendue
- la susprendre et la relancer en tâche de fond
- Indiquez comment réaliser ces opérations depuis un
autre shell que le shell de lancement
- Comment aurait-on du procéder pour lancer cette commande
directement en tâche de fond ?
exercice 5: redirections
- sauvegardez la liste des fichiers présents dans /etc dans
un dossier nommé /tmp/liste.txt
- ajoutez y la liste des fichiers présents dans /usr/bin et
dans /var/log
- sauvez dans un fichier la liste des noms et espaces disques
occupé du contenu de /var : une ligne par fichier contenu dans
/var
- faites de même mais sauvez aussi dans /tmp/erreurs la liste
des erreurs générée par votre commande
Exercice 6: enchaîments de commandes, filtres
- comptez le nombre de fichiers présents dans le dossier /etc
- combien y a-t-il de comptes d'étudiants de l3 ? (hint:
ypcat passwd permet d'obtenir la liste totale des comptes utilisateurs
du domaine)
- donnez une ligne de commande permettant d'afficher les lignes 5
à 12 du fichier /etc/passwd
- le fichier /etc/passwd est constitué de champs
séparés par le caractère :. Le dernier champ (a
priori, le 7e champ, cf "man 5 passwd" pour plus d'informations)
contient le shell de l'utilisateur. Donnez une commande permettant de
connaitre le nombre de shells différents utilisés par ls
utilisateurs présents dans /etc/passwd. Un même shell
utilisé par plusieurs utilisateurs ne doit être
compté qu'une seule fois.
Sources
une partie des exercices du présent TD s'inspire des sources
suivantes :