Vous êtes sur la page 1sur 23

SYSTÈME D'EXPLOITATION

(LINUX)
Par: Dr TCHOUPE TCHENDJI Maurice
Université de Dschang

Objectif
2

Objectif
† Utiliser Linux

† Lire, comprendre, écrire et pouvoir exécuter des


scripts shell
Pré-requis
† Savoirutiliser un SE (MS-DOS/Linux) en ligne de
commande
Déroulement du TP
† TP = 21h, TI = XX h
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Sommaire TP
3

Installation
Utilisation de linux en ligne de commandes
† Commandes relatives à la gestion:
„ Du SF
„ Des processus,
„ Des utilisateurs
„ Des E/S
„ «

Programmation en Shell
† A partir de la ligne de commandes
† Scripts Shell (édition, exécution)

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


4

Commandes mkdir, cd, ls, pwd, mv, cp, rm.


† Familiarisez-YRXVDYHFFHVFRPPDQGHVjO·DLGHGX
support de cours et du "petit guide des commandes"
donné à la fin de ce cahier.
† Les différents types de fichiers existants sous Unix sont :
fichier ordinaire (-), fichier répertoire (d), périphérique
accédé en mode caractère (c), en mode bloc (b), tube (p),
lien symbolique (l), socket (s). Le caractère indiqué entre
parenthèses est celui indiqué au début de chaque ligne
d'un ls.
† Parcourir l'arborescence du système de fichiers et donner
des exemples des différents types de fichier.

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Utilisation de linux en ligne de commande
5

Commandes mkdir, cd, ls, pwd, mv, cp, rm.


† Créez dans votre répertoire de connexion (home directory) un sous-
répertoire nommé « exercice ». Placez-vous dans ce répertoire.
4X·DIILFKHpwd "?
† Pour revenir au répertoire de base, deux solutions : cd ~, ou cd .. qui
UHPRQWHG·XQQLYHDX(VVD\H]-les.
† Dans le répertoire « exercice », créez un fichier texte (avec kate ou
gedit, ou touch«) nommé « exo », puis un sous-répertoire nommé «
essai ».
† Copiez le fichier « exo » dans le répertoire « essai » (commande cp).
Changez le nom de cette copie en « exo-copie » (commande mv, rm,
« 3HXW-on obtenir ce résultat en une seule opération ?
† Que fait la commande ls * " HVWXQ´métacaractèreµ 
† Comment peut-on voir les fichiers dont le nom commence par « exo » et
eux seuls ?

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


6

Commandes mkdir, cd, ls, pwd, mv, cp, rm.


† ( optionnel ) Que font les commandes suivantes ? Proposez
éventuellement pour chacune une meilleure façon de procéder (plus
courte).
„ cd ../..
„ ls .
„ cp /etc/shadow .
„ cp /etc/hosts ./toto/..
„ ls ../../../../../../../../../../../../../etc
„ mkdir vide; mv toto vide/tata
„ ls /home/../usr/./bin/..//lib/X11
† Comment peut-on supprimer un fichier avec demande de confirmation ?
† Comment supprimer un répertoire et ses sous-répertoires ?

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Utilisation de linux en ligne de commande
7

Commande find
† Donner la syntaxe commentée d'utilisation de la
commande find
† On désire utiliser la commande find pour effectuer les
opérations suivantes:
„ rechercher les répertoires de nom "cron" sur le système
„ rechercher les fichiers tubes sur le système
„ rechercher les répertoires accessibles en écriture pour les
autres
„ rechercher et détruire tous les fichiers d'extension "core" sur
le système.
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


8

Interpréteur de commandes et Fichiers de configuration


† /·LQWHUSUpWHXUGHFRPPDQGHVTXHYRXVXWLOLVH]HVWbash&·HVWOXLTXLODQFHOH
fichier exécutable en réponse à votre frappe. Renseignez vous rapidement sur
ses possibilités (info bash).
† La commande which SHUPHWGHFRQQDvWUHO·HPSODFHPHQWGXSURJUDPPHH[pFXWp
en réponse à une commande.
† Que répond $ which emacs ? ,
† La commande alias permet de créer de nouvelles commandes à partir de
commandes existantes.
„ Créez un alias « l » pour la commande ls DIILFKDQWO·HQVHPEOHGHVILFKLHUVG·XQUpSHUWRLUH
sous le format le plus détaillé. Que répond $ which l ?
† /RUVGHODFRQQH[LRQG·XQXWLOLVDWHXUbash interprète toutes les commandes
placées dans un fichier de commandes nommé .bashrc, situé dans le répertoire
HOME de cet utilisateur.
„ Quel est actuellement le contenu de votre fichier .bashrc ?
„ $O·DLGHGHPDQH[SOLTXH]OHSOXVSRVVLEOHGHVFRPPDQGHVFRQWHQXHVGDQVYRWUHbashrc.
„ Comment pouvez vous rendre permanente la nouvelle commande l créée plus haut ?
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Utilisation de linux en ligne de commande
9

'URLWVG·DFFqV
† Essayer de supprimer ou de modifier le fichier /etc/passwd. Que se passe-t-il ?
Expliquer la situation.
† $O·DLGHGHODFRPPDQGHLGYpULILHUYRWUHLGHQWLWpHWOH V JURXSH V DXTXHOYRXV
appartenez.
† Unix possède des mécanismes permettant au propriétaire d'un fichier d'en
protéger le contenu en définissant des droits d'accès : - autorisation de
lecture (r), - autorisation d'écriture (w), - autorisation d'exécution
ou d'accès (pour un répertoire) (x)
† Pour permettre le partage de fichiers (Unix est multi-utilisateur), Unix définit la
notion de groupes d'utilisateurs. Ainsi il est possible de restreindre l'accès d'un
fichier a tel ou tel groupe.
„ Expliquer en détail les résultats fournis par un ls -al
„ Pour savoir à quels groupes appartient un utilisateur, tapez groups nom-user
† Pour changer les droits d'accès d'un fichier, il vous faudra déjà être propriétaire
GHFHILFKLHU«

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


10

'URLWVG·DFFqV
† La commande Unix est chmod permissions fichier. Le paramètre permission peut
être codé de 2 façons :
„ - en octal : chaque droit (r,w,x) équivaut à un bit (--- = 0 ; rwx = 7). Vous pouvez donc
représenter avec 3 octets les droits d'accès de l'utilisateur, du groupe et de l'ensemble
des utilisateurs.
„ - symbolique : vous indiquez directement :
„ les personnes concernées (u = propriétaire, g = groupe , o = autres , a = ugo = tous)
„ si vous ajoutez (+), supprimez (-) ou donnez de manière absolue (en l'enlevant aux autres) la
permission (r, w, x)
„ Exemple:
„ chmod 750 fichier donne tous les droits au propriétaire, les droits de lecture et d'exécution
au groupe et aucun droit aux autres.
„ chmod g+w fichier ajoute le droit d'accès au groupe
„ Créer les alias suivants (à rajouter ensuite dans votre environnement) :
„ exe pour rendre un fichier exécutable par son propriétaire
„ visible pour rendre un fichier lisible par tous
„ invisible pour annuler l'opération précédente
„ deprotege pour rendre un fichier modifiable par son propriétaire
„ protege pour annuler cette opération

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Utilisation de linux en ligne de commande
11

'URLWVG·DFFqV
† A chaque fois que vous créez un fichier, celui-ci possède certains droits par défauts. La
commande umask permet de fixer ces droits. Sa syntaxe est umask complement-
permissions où l'argument n'est pas la représentation octale des droits mais leur
complément !
„ Exemple:
„ umask 000 GRQQHUDWRXVOHVGURLWVjWRXWOHPRQGHSRXUWRXVYRVQRXYHDX[ILFKLHUV« jpYLWHU 
„ umask 027 donnera tous les droits au propriétaire, les droits de lecture et d'exécution au groupe et
aucun droit aux autres.
„ La valeur de umask que vous possédez (tapez juste umask) est réglée dans le fichier de
configuration /etc/profile. Que faut-il faire pour que vous en changiez automatiquement à chaque
connexion ?
„ Créer un petit fichier texte (de contenu quelconque), qui soit lisible par tout le monde, mais pas
modifiable (même pas par vous).
„ Créer un répertoire nommé « secret », dont le contenu soit visible uniquement par vous même. Les
fichiers placés dans ce répertoire sont-LOVOLVLEOHVSDUG·DXWUHVPHPEUHVGHYRWUHJURXSH"
„ Créer un répertoire nommé « connaisseurs » tel que les autres utilisateurs ne puissent pas lister son
contenu mais puissent lire les fichiers qui y sont placés. On obtiendra :
„ $ ls connaisseurs
ls : connaisseurs: Permission denied
„ $ cat connaisseurs/toto
„ OHFRQWHQXGXILFKLHUWRWR V·LOH[LVWH !

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


12

'URLWVG·DFFqV
„ Soient la série de commandes suivante saisie en l'invite de
commandes:
$ umask 022
$ touch nouveauFichier
$ mkdir nouveauRepertoire
„ Quels sont les droits attribués aux fichiers "nouveauFichier" et au
répertoire "nouveauRepertoire"?
„ Positionner le masque (commande umask) tel qu'à la création
des fichiers, ils aient les droits rw-r-----
„ Quels seront alors les droits attribués aux répertoires
nouvellement créés?
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Utilisation de linux en ligne de commande
13

'URLWVG·DFFqV Rep personnel=home

Soit la structure arborescente donnée ci-contre vous


† Créez la à partir de votre répertoire de connexion.
† Quels sont les droits appliqués à fichier2.
rep1 rep2
† Modifiez ces droits et accordez un plein accès à ce fichier à toute
FDWpJRULHG·XWLOLVDWHXU
† Copier fichier2 dans rep2. fich1 rep3
† Comparer les droits de fichier2 contenus dans rep1 et fichier2 contenu
dans rep2 (celui issu de la copie). Commentez.
† Modifiez les droits du répertoire rep1 de façons à retirer à toutes les fich2
FDWpJRULHVG·XWLOLVDWHXUVOHGURLWG·H[pFXWLRQ OHUpSHUWRLUHFRXUDQWHVW
toujours le répertoire vous).
† Effectuer en commentant les opérations suivantes :
„ Lister le contenu du répertoire rep1.
„ Imprimer le contenu du fichier fichier1.
„ (VVD\HUG·\FUpHUXQQRXYHDXILFKLHU
† Retirer au répertoire rep1 et à tous les utilisateurs le droit de lectures.
† Retirer au répertoire rep1 HWjWRXVOHVXWLOLVDWHXUVOHGURLWG·pFULWXUH

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


14

/HVGURLWVG·HQGRVVHPHQWHWOHsticky bit.
† Créer dans rep3 deux fichiers file1 et file2 ayant les droits respectifs suivant : rw----r-- et rwx---r-x
„ Positionner les sticky bit de ces deux fichiers et lister à nouveau leurs droits ; Commenter.
„ $WWULEXHUOHGURLWG·HQGRVVHPHQWVXUFKDFXQGHVGHX[ILFKLHUVHWOLVWHUjQRXYHDXOHVGRLWV ; Commenter.
† Modifier les droits du rep3 en lui attribuant les droits : rwxr-xr-x
„ Exécuter les commandes (répertoire courant = vous)
$ echo ´ touch /home/<nom_compte_courant>/vous/rep1/rep3/new-file ´!FRPPDQGH
#(&HFLSHUPHWGHFUpHUOHILFKLHUGHFRPPDQGH´FRPPDQGHµ
$ chmod +x commande DWWULEXWLRQGXGURLWG·H[pFXWLRQ
„ Connectez vous comme un nouvel utilisateur (sous un autre nom) et essayer de créer un fichier dans rep3
$ touch /home/rep personnel/vous/rep1/rep3/newFile (1)
„ Saisir la commande
$ /home/rep personnel/vous/rep1/rep3/commande (2)
„ Revenir dans le compte <rep SHUVRQQHO!HWRFWUR\HUOHGURLWG·HQGRVVHPHQWGXSURSULpWDLUHDXILFKLHU
commande .
Dans ce compte, saisir la commande suivante dans le rep vous :
$ chmod +s commande
„ Dans le nouveau compte exécuter les commandes (1) et (2) .
„ Interpréter.

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Utilisation de linux en ligne de commande
15
9DULDEOHVG·HQYLURQQHPHQW
† /HVYDULDEOHVG·HQYLURQQHPHQWVRQWGHVYDULDEOHVWUDQVPLVHVSDUOHV\VWqPHG·H[SORLWDWLRQjWRXVOHV
processus.
† &KDTXHSURFHVVXVKpULWHGHVYDULDEOHVGHVRQSqUH OHSURFHVVXVTXLO·DODQFpLFLHQJpQpUDOOHshell).
† &HVYDULDEOHVSHXYHQWrWUHFRQVXOWpHVRXPRGLILpHV/DYDOHXUGHVYDULDEOHVG·HQYLURQQHPHQWHVWGH
type chaîne de caractère. Depuis le shell (bash, csh ou tcsh),
† 2QLGHQWLILHOHVYDULDEOHVSDUOHXUQRPSUpFpGpG·XQ
† Exemples :
„ Affichage de la variable PATH : echo $PATH
„ &UpHODYDULDEOH758&TXLYDXW´KHOORµ758& KHOOR
† /DFRPPDQGHVHWDIILFKHWRXWHVOHVYDULDEOHVG·HQYLURQQHPHQW/HVSURJUDPPHVpFULWVGDQVGHV
ODQJDJHVFRPSLOpVRXLQWHUSUpWpVSHXYHQWDFFpGHUDX[YDULDEOHVG·HQYLURQQHPHQWGRQWLOVKpULWHQW(Q
langage C, les fonctions de base sont getenv() et setenv()
„ $IILFKHUODOLVWHGHYRVYDULDEOHVG·HQYLURQQHPHQW4XHOJHQUHG·LQIRUPDWLRQVWURXYH-t-on ?
† Le shell recherche les commandes dans la liste des répertoires indiqués dans la variable
G·HQYLURQQHPHQW3$7+4XHOOHHVWODYDOHXUGH3$7+"
† Créer dans votre répertoire de connexion un sous-répertoire nommé bin et y placer un exécutable.
† Ajouter ce répertoire bin à votre PATH.
† 9pULILHUTXHYRXVSRXYH]PDLQWHQDQWODQFHUO·H[pFXWLRQGHFHWH[pFXWDEOHTXHOTXHVRLWOHUpSHUWRLUH
courant.
† Pour modifier le PATH de façon permanente, placer la commande de modification dans le fichier de
configuration de votre shell$O·DYHQLUYRXVSRXYH]SODFHUYRVH[pFXWDEOHVSUpIpUpVGDQVYRWUH
répertoire bin.
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


16

9DULDEOHVG·HQYLURQQHPHQW
† Étudier la séquence de commandes shell suivante :
„ TRUC=machin # cree la variable TRUC
„ echo $TRUC # O·DIILFKH
„ bash # lance un nouveau shell
„ echo $TRUC # affiche la valeur de TRUC
„ TRUCBIS=hoho # une autre variable
„ echo $TRUCBIS
„ TRUC= machinTruc
„ echo $TRUC
„ exit # termine le second shell
„ echo $TRUC
„ echo $TRUCBIS # ??

La commande bash (ligne 3) ouvre un nouveau shell, qui hérite des


YDULDEOHVGHO·DQFLHQ4XHV·DIILFKH-t-il à la ligne 11? Expliquer pourquoi.
Comment procéder pour que la commande echo $TRUC (ligne 8) ne
produise pas un résultat vide?
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Utilisation de linux en ligne de commande
17

Commandes mount, df et du.


† Combien y a-t-il de systèmes de fichiers montés sur le
système ?
† A quoi correspondent ils ?

† A quel système appartient votre répertoire de connexion ?

† Combien reste-t-il d'espace disque libre sur votre machine ?

† Quel espace disque occupe votre répertoire de connexion ?

† A l'aide des commandes du -s et sort, afficher la liste des


répertoires des étudiants classée suivant l'espace disque
qu'ils occupent.

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


18
inodes et liens.
† Quel est le numéro d'inode de votre répertoire de connexion ? (rappel : la
commande ls -i affiche les numéros d'inode).
† Créer un nouveau répertoire nommé « dossier ». Combien il y a-t-il de liens sur
ce répertoire ? A quoi correspondent ils ?
† Dans le répertoire « dossier », créer un sous répertoire « sous-dossier ».
Combien il y a-t-il maintenant de liens sur le répertoire « dossier » ? Pourquoi ?
† Créer ou copier un fichier quelconque dans le répertoire « sous-dossier ». Quel
est son numéro d'inode ?
† Changez le nom de ce dernier fichier, pour l'appeler « fichier ». Le numéro
d'inode change-t-il ?
† Créer un lien (dur) nommé « lien-dur » sur le fichier « fichier ». Vérifier que le
nombre de liens est bien 2 et que les inodes sont identiques.
† Créer un lien symbolique nommé « lien-mou » sur le fichier « fichier ». Que
constatez vous ?
† Déplacer le fichier « fichier »dans un autre répertoire. Le liendur est il encore
valide ? et le liensymb ? Même question si l'on supprime le fichier « fichier ».
† Dans le répertoire « sous-dossier », créer un lien sur le répertoire « dossier ».
Que se passe-t-il si l'on utilise la commande ls -Ral dossier ?
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Utilisation de linux en ligne de commande
19

Les processus
† A l'aide de la commande ps, afficher la liste de tous les processus tournant sur votre
machine, avec les informations suivantes :
„ USER nom de l'utilisateur propriétaire du processus
„ PID numéro d'identification
„ %CPU
„ %MEM
„ STAT Etat
„ START Date de début
„ TIME
„ COMMAND Commande utilisée pour lancer ce processus
† A quoi correspond l'information TIME ?
† Quel est le processus ayant le plus utilisé le processeur sur votre machine ?
† Quel a été le premier processus lancé après le démarrage du système ?
† A quelle heure votre machine a-t-elle démarré ?
† Pouvez-vous établir le nombre approximatif de processus créés depuis le démarrage de
votre machine ?

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


20

Les processus
† Sous UNIX, chaque processus (excepté le premier) est
créé par un autre processus, son processus père. Le
processus père d'un processus est identifié par son
PPID (Parent PID).
„ Trouver une option de la commande ps permettant
d'afficher le PPID d'un processus.
† Donner la liste ordonnée de tous les processus
ancêtres de la commande ps en cours d'exécution.
† Reprendre la question précédente avec la commande
pstree.

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Utilisation de linux en ligne de commande
21

Les processus
† Essayez la commande top, qui affiche les mêmes
informations que ps mais en rafraîchissant
périodiquement l'affichage. La touche ? permet
d'afficher un résumé de l'aide de top.
„ Afficher dans top la liste de processus triée par
occupation mémoire (resident memory) décroissante.
† Quel est le plus « gros » processus sur votre machine
?
† A quoi correspond-il ? (rappel: vous pouvez utiliser
man truc pour découvrir ce que fait truc...).

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Utilisation de linux en ligne de commande


22

Arrêt d'un processus.


† Ecrire dans un fichier forever.c un programme suivant l'algorithme :
iĸ0 // forever.c
// plus nul tu meurs !
Répéter infiniment : void main() {
iĸ i+1 int i=0;
for( ; ; ) {
si i est multiple de 100 000, afficher i et un saut de ligne (\n). i++;
† Lancer l'exécution de ce programme et vérifier qu'il fonctionne. if ( (i%100000)==0 )
printf("%d\n",i);
† L'arrêter en tapant CTRL-C. }
}
† En utilisant les fonctionnalités du shell (&), lancer le programme compteur en
arrière plan.
† Lancer vi (emacs) en arrière plan dans une autre fenêtre.
† Comment pourriez vous supprimer les affichages du compteur ?
† A l'aide des commandes ps et kill (avec un PID), arrêter le compteur.

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Scripts Shell
23

Saisie et interprétation d'un script shell


† Créer le fichier commande1 contenant les lignes suivantes:
„ $cat commande1
date
echo -n catalogue de travail :;pwd
echo -n nombre de fichier du catalogue de travail ; ls|wc ²l
„ $
† Réaliser l'interprétation de ce fichier par le shell de trois façons
différentes
† Modifier le programme précédent en un fichier nommé commande2
parametré afin qu'il puisse être appelé comme suit:
„ FRPPDQGHQRPG·XQFDWDORJXH!
† qui donne en résultat
„ La date
„ Le nom du catalogue pris en argument
„ Le nombre de fichier contenu dans le catalogue pris en argument

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Scripts Shell
24

Paramètres de la ligne de commande


† Le script shell suivant vérifie si un nom de fichier pris en argument se trouve dans
O·DUEUHGHVILFKLHUVusr/ens/vous à /usr/ens/vous/livre/exemple
† $ cat commande3
cd /usr/ens/vous
if test -f $1
then echo $1 existe
else if test -f ./livre/$1
else if test -f ./livre/exemple/$1
then echo $1 existe
else echo $1 inexistant
fi
fi
fi
† Lire, comprendre et adapter ce script afin qu'il puisse s'exécuter sur un arbre
ayant votre répertoire de connexion comme racine

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Scripts Shell
25

L'instruction cas:
écrire un programme qui attend au plus deux
paramètres et tel que :
† 6·LOHVWDSSHOpDYHFSDUDPqWUHVLOUHQYRLHOHFDWDORJXH
de travail
† $YHFXQSDUDPqWUHLOWHVWHV·LOV·DJLWG·XQILFKLHUHWOHFDV
pFKpDQWLODIILFKHVRQFRQWHQXjO·pFUDQVLQRQV·LOV·DJLWG·XQ
FDWDORJXHLODIILFKHODOLVWHGHVILFKLHUVTX·LOFRQWLHQW
† 6·LOHVWDSSHOpDYHFGHX[SDUDPqWUHVLOYpULILHTX·LOV·DJLW
de deux fichiers ordinaires et fait une copie du premier
GDQVOHVHFRQGV·LOQ·H[LVWHSDVGpMj
† 7RXWHDXWUHVLWXDWLRQHQWUDvQHO DIILFKDJHG·XQPHVVDJH
d'erreur

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Scripts Shell
26

Les itérations non bornées


† Lire, comprendre et dire ce que fait chacun des deux
programmes suivants:
while sleep 60
do
who |grep x
done

until(who|grep x)
do
sleep 60
done
† Quel(s) commentaire(s) pouvez vous faire?

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Scripts Shell
27
La récursion
† Les procédure SHELL peuvent être récursives c'est-à-GLUHLOHVWSRVVLEOHTX·XQRXSOXVLHXUVDSSHOVjOD
commande se trouve dans sa définition
† O·H[HPSOHTXLVXLWFRUUHVSRQGjODUHFKHUFKHHWjO·DIILFKDJHGHWRXWHVOHVUpIpUHQFHVGHFDWDORJXHV
dans le sous arbre commençant en un catalogue donné en second argument de la commande et qui
contient une certaine référence de fichier donné en argument.
$ cat $HOME/commande10
cd $2
if test ²f $1
then echo la référence $1 est dans le catalogue 'pwd'
fi
for i in *
if test -d $i
then $HOME/commande10 $1 $i
if
done
$
Remarque : on peut écrire simplement ceci utilisant la commande find
$ cat commande 11
find $2 -name $1 -print
$

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Scripts Shell
28

La récursion
† Lire, comprendre, saisir et interpréter le script
précédent.
† Expliquer pourquoi on y utilise des références absolue

† En s'inspirant de ce script, écrire un autre qui parcourt


le sous arbre à partir du répertoire personnel de
O·XWLOLVDWHXUHWVXSSULPHWRXVOHVILFKLHUVG·H[WHQVLRQcore

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Petit guide des commandes Unix
29
Nom Description Options Paramètres
alias Renomme ou définit une variable=commande
commande
awk, gawk extraction -F : '...' : redéfinition du nom de fichier
d'informations d'un séparateur de champ
fichier 'commande' : traitement
à faire sur les chaînes
extraites
cal affiche le calendrier de mois année
l'année spécifiée en
paramètre
cat imprime le contenu du nom de fichier
fichier mentionné
cd se positionne sur le chemin d'accès à un
répertoire désigné répertoire
chmod change les permissions -R change les droits mode - nom de fichier
en lecture, écriture, récursivement à partir ou de répertoire
exécution du noeud
(mode = ugo)
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Petit guide des commandes Unix


30

compress compresse un fichier (voir -c : résultat sans fichier


gzip) modification du fichier
d'origine
-f : écrasement d'un fichier
compressé préexistant
-v : taux de compression
cp copie du fichier source -i : demande confirmation source - destination
vers la destination -p : conservation de date
et droits
-r : recopie récursive d'un
répertoire
date retourne la date courante
diff compare deux fichiers et -c : affiche 3 lignes avant fichier1 fichier2
affiche les différences et 3 lignes après
echo envoi en écho des -n : supprime le retour
paramètres spécifiés à la chariot en fin de
suite ($PATH, "bye") commande

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Petit guide des commandes Unix
31
elm courier électronique -s : chaîne de destinataire
caractères qui sera le
sujet du message
-f : nom de la boîte à
lettres
file retourne le type de nom de fichier
fichier spécifié (ascii,ps,
exé.sparc ou 68020)
find "répertoire" recherche récursive d'un -name fichier : fichier à
fichier à partir du chercher
répertoire -print : affiche le chemin
trouvé
grep affiche les lignes du -v : seulement les lignes chaîne de caractères -
fichier contenant la ne contenant pas la fichier
chaîne de caractères chaîne
-i : majuscules et
minuscules identiques
-n : avec numéros de
lignes
Cahier de TP: Système d'exploitation (Linux) -c//: nombre de Par: Dr TCHOUPE T. Maurice (UDS)
comparaisons positives

Petit guide des commandes Unix


32
gunzip décompresse un -c : le résultat est nom de fichier
fichier produit sans
modification du
fichier d'origine
-v : taux de
compression
gzip compresse un fichier -c : résultat sans nom de fichier
(voir compress) modification du
par défaut, la fichier source
destination est la -f : écrasement d'un
sortie standard qu'on fichier compressé
redirige vers un préexistant
fichier si on veut -v : taux de
obtenir un fichier compression
compressé -d : force une
décompression
-9 : niveau maximum
Cahier de TP: Système d'exploitation (Linux) de
// compression Par: Dr TCHOUPE T. Maurice (UDS)
Petit guide des commandes Unix
33

head liste les n premières -n : nombre de lignes source > destination


lignes du fichier affichées (par défaut
10)
id retourne le nom de login,
l'UID, le groupe et le GID
kill envoi d'un signal à un -l : liste des signaux numéro du process
processus disponibles
-n : numéro du signal à
envoyer
2 : INT (ctrl-c : )
3 : QUIT (ctrl-\)
9 : KILL
ln création d'une nouvelle source - destination
-s : création d'un lien
référence pour un fichier
symbolique
préexistant
logname retourne le nom de login
de l'utilisateur

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Petit guide des commandes Unix


34

ls liste le contenu d'un -a : prise en compte des nom de répertoire


répertoire fichiers cachés
-F : renseigne sur le type
de fichier (*, /, @)
-i : précision du numéro
d'inode des fichiers
-R : liste récursivement le
contenu du répertoire
-l : informations détaillées
-g : ajout du nom du
groupe
-d : renseigne sur le
répertoire lui-même
-t : liste par date de
modification
-u : liste par date d'accès
-r : ordre inverse

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)


Petit guide des commandes Unix
35

mail courier électronique -s : chaîne de caractères destinataire - <fichier


qui sera le sujet du
message
-f : nom de la boîte à
lettres
-v : trace du mail jusqu'à
sa délivrance
man retourne le mode nom de commande
d'emploi de la commande
s'il existe
mkdir création d'un répertoire nom de répertoire
more liste le contenu d'un fichier nom de fichier
page par page
mv déplace fichiers et source - destination
-i : demande confirmation
répertoires

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Petit guide des commandes Unix


36

ps liste des processus BSD -a : processus détenus


par les autres utilisateurs
-u : nom du propriétaire
du processus
-x : processus sans
terminal associé
-l : description complète
-t : terminal particulier
liste des processus -f : ou l : description plus
Système V ou moins longue
-e : liste tous les processus
-p : processus dont le
numéro suit l'option p
-t : processus attachés au
terminal spécifié
-u : processus
appartenant au
propriétaire dont le nom
ou l'UID est donné
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Petit guide des commandes Unix
37

pwd retourne la référence


absolue du répertoire
courant
rlogin ouvrir une session vers nom de machine
une machine distante -l : nom de login
(sortie :exit)
rm supprime la référence du nom de fichier ou de
-f : force la commande
fichier dans le répertoire répertoire
sans s'occuper des droits
-i : demande confirmation
-r : destruction récursive

rmdir suppression d'un nom de répertoire


répertoire vide
sleep ne fait rien pendant n temps en secondes
secondes
sort tri des lignes du fichier -r : tri inverse fichier
suivant l'ordre ASCII -u : élimine les
lignesidentiques
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Petit guide des commandes Unix


38
tail liste les n dernières -n : nombre de lignes nom de fichier
lignes du fichier affichées (par défaut
10)
talk, ytalk permet de converser
avec une machine destination
distante
tar archivage/désarchivage c : création de l'archive archive -répertoire ou
de fichiers x : restauration de fichiers
l'archive
t : listage du contenu de
l'archive
v : mode verbeux
p : préserve dates et
droits à la restauration
f : le nom du fichier
spécifié sera celui de
l'archive
telnet établir une connexion nom de machine
avec une machine
distante(sortie
Cahier de TP: Système d'exploitation (Linux) : exit) // Par: Dr TCHOUPE T. Maurice (UDS)
Petit guide des commandes Unix
39
touch modifie les -a : dernier accès fichier
caractéristiques d'un seulement
fichier (option -a : m par -m : dernière
défaut) modification seulement
crée un fichier vide s'il
n'existe pas déjà
tty donne le nom du terminal
unalias supprime un alias variable
uname donne le nom du système -a : informations
d'exploitation complètes
-n : nom de la machine
-r : release du système
d'exploitation
-s : nom du système
d'exploitation
uniq recopie de source dans source destination
destination après -u : seules les lignes
suppression des lignes uniques sont recopiées
identiques
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Petit guide des commandes Unix


40
uudecode restitue un fichier binaire fichier
à partir du fichier
éditable (ASCII) créé
avec uuencode
uuencode encode un fichier binaire fichier - indication
en fichier éditable (ASCII) >fichier encodé

w aperçu de l'activité de la -h : supprime l'entête nom d'utilisateur


machine -s : affichage restreint
whereis retourne le chemin nom de la commande
complet d'accès à tous les
répertoires contenant la
commande
which retourne le chemin nom de la commande
complet d'accès à une
commande
who (am i) retourne le nom des
utilisateurs qui ont ouvert
une session
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Petit guide des commandes Unix
41

Exemple Description
alias dir=ls -l Il suffira de taper "dir" pour consulter la liste des fichiers avec leurs droits
unalias dir Supprime l'alias de nom "dir"
awk nom de fichier
cal 09 1996 Affiche le calendrier du mois de Septembre 1996
cat exemple.c Liste le contenu du fichier de nom "exemple.c"
cd programmes Se déplace dans le répertoire de nom "programmes"
Donne tous les droits au propriétaire du fichier, et une simple lecture au
chmod 744 exemple.c
groupe et à l'univers
Compresse le fichier de nom "exemple.c", en écrasant un fichier préexistant
compress -f exemple.c
s'il existe
uncompress exemple.c Décompresse le fichie r"exemple.c"
cp exemple.c toto.c Crée le fichier de nom "toto.c" identique au fichier "exemple.c"
date Affiche la date courante
Compare "fichier1" et "fichier2" en affichant 3 lignes avant et 3 lignes après
diff -c fichier1 fichier2
chaque différence
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Petit guide des commandes Unix


42

echo $PATH Affiche le contenu de la variable "PATH"


elm martin@inf Envoie un message à martin
mail martin <exemple.c Envoie le fichier "exemple.c" à martin
file exemple.c Retourne quel est le type du fichier "exemple.c"
Recherche récursivement et affiche le chemin menant au fichier
find "." -name exemple.c -print
"exemple.c" à partir du répertoire courant

Affiche, avec leurs numéros, les lignes du fichier "exemple.c" qui


grep -n -i "void" exemple.c
contiennent la chaîne "void"
Compresse le fichier "exemple.c" en conservant le fichier d'origine.
gzip -c exemple.c > exemple.c.gz
Le fichier compressé est "exemple.c.gz".
Décompresse le fichier "exemple.c.gz" sans perdre le fichier
gunzip -c > exemple.c exemple.c.gz compress&eacute.
Le résultat se trouve dans le fichier "exemple.c"
head exemple.c Affiche les 10 premières lignes du fichier "exemple.c"
tail -5 exemple.c Affiche les 5 dernières lignes du fichier "exemple.c"
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Petit guide des commandes Unix
43

id Retourne le login, l'UID, le groupe et le GID courants


kill -9 8756 tue le processus de numéro 8756

ln -s exemple.c toto.c crée un lien symbolique sur le fichier "exemple.c", de nom "toto.c"

logname Retourne le nom de login de l'utilisateur


Donne le contenu du répertoire "programmes" en donnant des informations
ls -l programmes
sur les fichiers (taille, dates, ...)
man chmod Affiche le manuel d'utilisation de la commande "chmod"
mkdir sources Crée le répertoire "sources"
more exemple.c Affiche, page par page, le contenu du fichier "exemple.c"
mv exemple.c TP1.c Renomme le fichier "exemple.c" sous le nom "TP1.c"
ps -aux Sous système V, donne la liste de tous les processus actifs
pwd Retourne la référence absolue du répertoire courant

rlogin -l martin champagne Établit une connexion sur la machine champagne, sous le login de martin

telnet champagne Établit une connexion sur la//machine champagne


Cahier de TP: Système d'exploitation (Linux) Par: Dr TCHOUPE T. Maurice (UDS)

Petit guide des commandes Unix


44
rm exemple.c Supprime le fichier "exemple.c"
rmdir sources Supprime le répertoire "sources"
sleep 10 Attend 10 secondes

sort -r TP1.c Affiche le fichier "TP1.c", les lignes étant triées en ordre inverse

talk champagne@cal.enst.fr Lance une conversation sur la machine "champagne@cal.enst.fr"

tar cf sources.tar sources


Crée une archive, de nom "sources.tar", du contenu du répertoire "sources"

Extrait le contenu d'une archive, de nom "sources.tar", dans le


tar xvf sources.tar sources répertoire"sources". L'écran affiche les noms des fichiers au fur et à
mesure de leur désarchivage.
L'archive est conservée.

Modifie la date de dernier accès au fichier "exemple.c" à la date


touch exemple.c
courante
tty Donne le nom du terminal
Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)
Petit guide des commandes Unix
45

Affiche, dans l'ordre, le nom du système d'exploitation,


uname
le nom et la release du système de la machine

Recopie le fichier "exemple.c" dans "uniques.c" en


uniq exemple.c uniques.c
supprimant les lignes identiques
uudecode fichier
uuencode fichier - indication >fichier encodé
Donne une idée de l'utilisation de la machine faite par
w martin
l'utilisateur martin
Retourne le chemin complet d'accès à tous les
whereis gcc
répertoires contenant la commande gcc
which gcc Retourne le chemin complet d'accès à la commande gcc
Retourne le nom des utilisateurs qui ont ouvert une
who (am i)
session sur cette machine

Cahier de TP: Système d'exploitation (Linux) // Par: Dr TCHOUPE T. Maurice (UDS)

Vous aimerez peut-être aussi