A. Objectifs B. Environnement C. Enoncé du TP

publicité
TP n°1 :Unix et commandes de base
A. Objectifs
Se familiariser avec les commandes de base de Linux et être capable d'effectuer des opérations de base :
Créer, modifier, supprimer des fichiers, changer les droits, créer des scripts.
B. Environnement
Vous disposerez du système d'exploitation Linux en ligne de commande exclusivement. . Un « Shell » est un
interpréteur de commandes du système UNIX/LINUX. Les commandes exécutées par un Shell peuvent provenir
soit du terminal, soit d'un fichier appelé fichier de commandes.
N’oubliez pas que l’aide en ligne est disponible pour chaque commande du shell. Pour accéder { cette
aide, la commande man suivie du nom de la commande dont l’aide est nécessaire suffira.
C. Enoncé du TP
Toutes les manipulations suivantes seront effectuées en ligne de commande
C.1. Manipulation de fichiers
Voici quelques exercices pratiques destinés à vous initier au shell.
a. Ouvrir un shell
Grâce à la combinaison de touche « Ctrl-Alt-F1 » ou « Alt-F1 », vous allez accéder au shell Linux. A partir de
là, vous devez ouvrir une session en utilisant le compte crée lors de l’installation.
b. Exo 1 : Où suis-je ?
A première vue, dans quel répertoire êtes-vous ?
Réponse :
Vérifiez la réponse en utilisant la commande permettant de connaitre le répertoire courant « pwd »
1/9
c. Exo 2 : Se déplacer et créer/supprimer un répertoire
Déplacez-vous dans le répertoire « Documents/ » et listez le répertoire. Créez un nouveau répertoire appelé
« tpshell1 » et listez à nouveau le répertoire.
Commandes utilisées :
Déplacez-vous dans ce répertoire afin de lister son contenu. Essayez ensuite de supprimer ce répertoire tout
en restant dedans. Que se passe t-il ?
Commande utilisée :
Cause de l’erreur :
Revenez dans le répertoire parent et supprimez le répertoire « tpshell1 »
Commande utilisée :
d. Exo 3 : Créer/Copier/Déplacer/Supprimer des fichiers
La commande « touch » permet de créer un nouveau fichier vide. La syntaxe de la commande est la
suivante :
touch chemin/nom_fichier
Créer les fichiers suivants à l’aide de la commande « touch » :
texte1.txt , texte2.txt, texte3.txt
Ensuite, nous allons ajouter une ligne à chaque fichier créé. Pour cela, nous utiliserons un opérateur
spécial de redirection « >> ».
La commande suivante permet d’ajouter du texte à un fichier existant :
~$ echo “Le texte à ajouter” >> chemin/nom_fichier
Ajouter du texte à chacun des fichiers précédemment créés en utilisant la commande « echo ».
Commandes utilisées :
2/ 9
A l’aide de la commande « cat », afficher le contenu des fichiers et vérifiez qu’ils contiennent bien le texte
ajouté.
Il est temps d’apprendre à copier des fichiers. La commande « cp » permet d’effectuer ce travail. La
syntaxe de « cp » est la suivante :
~$ cp source destination
Voici un exemple qui copie tous les fichiers du répertoire courant ( ./* ) vers le répertoire
« /home/gen/Documents » :
cp ./* /home/gen/Documents
Créer un nouveau répertoire « ~/Documents/tpshellcopie ». Ensuite copier les fichiers texte dedans
Commande utilisée :
Vérifiez que les fichiers ont bien été copiés puis effacer les fichiers source (Puisqu’ils ont été copiés dans
« tpshellcopie », on peut les effacer sans crainte)
Comme les opérations précédentes sont un peu fastidieuses, il est préférable de savoir comment
déplacer des fichiers avec la commande « mv » :
mv source destination
L’exemple suivant déplace les fichiers du répertoire courant vers le sous répertoire « srep » :
~$ mv ./* srep/
Déplacez les fichiers contenus dans le répertoire
« ~/Documents/tpshell1 »
« ~/Documents/tpshellcopie » vers le répertoire
Commande utilisée :
e. Exo 4 : Modifiez les droits
Créez un répertoire « tp-shell1 » dans « Documents ».
Quels sont les droits qui s’appliquent à ce répertoire ?
Quels sont les utilisateurs qui pourront créer des fichiers dans ce répertoire ? Et quels sont ceux qui pourront
lister son contenu ?
3/9
Modifiez les droits afin d’être le seul (A part root) à pouvoir lister le contenu de ce répertoire.
Commande utilisée :
f. Exo 5 : Créer un utilisateur
Utilisez la commande « adduser » permettant de créer un nouvel utilisateur dont le login sera « vincent ».
Commande utilisée :
A l’aide de la commande « logout » , fermez le shell et ouvrez une session en utilisant le compte
nouvellement crée. Vérifiez alors que vous ne pouvez pas lister le répertoire dont vous avez modifié les droits
à l’exercice précédent. Fermez la session et rouvrez une session avec l’utilisateur de base.
g. Exo 6 : Renommer un répertoire
Renommez le répertoire « tp-shell1 » en « tp-shell-new ».
Commandes utilisées :
tp1
Documents
tp-shell
tp2
tp3
h. Exo 7 : Le fichier passwd
La liste des utilisateurs du système est stockée dans le fichier « /etc/passwd ». Ce fichier contient une
ligne par utilisateur. Contrairement à ce que son nom évoque, il ne contient aucun mot de passe. C’est
une sécurité ajoutée par les concepteurs de Linux afin de le rendre moins vulnérable.
Faîtes une copie du fichier « passwd » dans votre répertoire « tp1 ». Lister son contenu à l’aide de la
commande « cat ». Repérez la ligne vous concernant.
Afin de connaître le nombre d’utilisateurs de la machine, il faut compter les lignes du fichier « passwd ».
Pour cela il existe une commande « wc » (Word count) capable de compter les lignes d’un fichier.
Trouvez la commande complète capable de compter les lignes du fichier « passwd ». Utilisez l’aide en ligne
si besoin (man).
Commande trouvée :
4/9
Afin d’ajouter une ligne au fichier « passwd » de l’exercice précédent, il faut étudier de plus près le
format de la ligne. Chaque ligne est composée de « champs ». Chaque champ est séparé par le symbole
« : ».
Trouvez la signification de tous les champs en examinant l’aide en ligne de la commande « passwd ». Aidezvous de la commande suivante.
Champs et significations :
man 5 passwd
Trouvez les valeurs des champs nécessaires pour créer un nouvel utilisateur « yanis » dans le fichier
« passwd ». (Vérifiez que les identifiants choisis n’existent pas déjà pour un autre utilisateur)
Valeurs des champs :
i. Exo 8 : Les redirections
Pour ajouter un utilisateur sans utiliser d’éditeur de fichier, nous allons nous servir des opérateurs de
redirection. Les opérateurs de redirections permettent de rediriger la sortie standard vers un fichier.
La commande « echo » suivante permet d’afficher du texte sur la sortie standard (L’écran de la console
par défaut) :
echo “bonjour”
Avec l’opérateur de redirection « > », le flux est redirigé vers un fichier :
echo “bonjour” > fichier
Avec l’opérateur de redirection « >> », le flux est redirigé à la fin d’un fichier existant :
echo “bonjour” >> fichier
Ajoutez la ligne nécessaire à la création d’un utilisateur « yanis » au fichier « passwd » tout en respectant la
syntaxe du fichier « passwd ». Attention, travaillez sur la copie plutôt que sur l’original car une erreur
dans l’original pourrait bien perturber le fonctionnement de tout le système
Commande utilisée :
5/9
j. Exo 9 : La commande « grep »
Utilisez la commande « cat » conjointement avec « grep » pour afficher uniquement
la ligne concernant l’utilisateur « yanis » précédemment créée. Pour cela, vous
disposez de l’opérateur « | » qui permet de rediriger la sortie de la commande « cat »
vers l’entrée de la commande « grep ».
La commande find
La commande find permet de retrouver des fichiers à partir de certains critères. La syntaxe est
la suivante :
find <répertoire de recherche> <critères de recherche>
Les critères de recherche sont les suivants :
•
-name recherche sur le nom du fichier,
•
-perm recherche sur les droits d'accès du fichier,
•
-links recherche sur le nombre de liens du fichier,
•
-user recherche sur le propriétaire du fichier,
•
-group recherche sur le groupe auquel appartient le
fichier,
•
-type recherche sur le type (d=répertoire, c=caractère,
f=fichier normal),
•
-size recherche sur la taille du fichier en nombre de
blocs (1 bloc=512octets),
•
-atime recherche par date de dernier accès en lecture du
fichier,
•
-mtime recherche par date de dernière modification du
fichier,
•
-ctime recherche par date de création du fichier.
Recherche par nom de fichier
Pour chercher un fichier dont le nom contient la chaîne de caractères toto à partir du
répertoire /usr, vous devez tapez :
find /usr -name toto -print
En cas de réussite, si le(s) fichier(s) existe(nt), vous aurez comme sortie :
toto
En cas d'échec, vous n'avez rien.
Pour rechercher tous les fichiers se terminant par .c dans le répertoire /usr, vous taperez :
find /usr -name " *.c " -print
Vous obtenez toute la liste des fichiers se terminant par .c sous les répertoires contenus dans
/usr (et dans /usr lui même).
Recherche suivant la date de dernière modification
Pour connaître les derniers fichiers modifiés dans les 3 derniers jours dans toute
l'arborescence (/), vous devez taper :
find / -mtime 3 -print
Recherche suivant la taille
Pour connaître dans toute l'arborescence, les fichiers dont la taille dépasse 1Mo (2000 blocs
de 512Ko), vous devez taper :
find / -size 2000 -print
Recherche combinée
Vous pouvez chercher dans toute l'arborescence, les fichiers ordinaires appartenant à olivier,
dont la permission est fixée à 755, on obtient :
find / -type f -user olivier -perm 755 -print
Commande « cut » :
La commande « cut » permet d’extraire une partie de chaque ligne d’un fichier. Chaque
partie d’une ligne est un champ (Field). Il faut choisir les champs que l’on veut conserver
ainsi que le séparateur de champs.
Syntaxe de la commande « cut »
cut -d separateur -f 1,2,n
Où :
-d separateur : Défini le caractère servant de délimiteur
-f 1,2,.. : Détermine les champs à conserver. Chaque champ est numéroté de 1 à n
Annexe
Qu'est-ce que le shell ?
C’est l’interpréteur de commandes (l'interface) entre l'utilisateur et le système d'exploitation,
d'où son nom anglais «shell», qui signifie «coquille».
Le shell est ainsi chargé de faire l'intermédiaire entre le système d'exploitation et l'utilisateur
grâce aux lignes de commandes saisies par ce dernier. Son rôle consiste ainsi à lire la ligne de
commande, interpréter sa signification, exécuter la commande, puis retourner le résultat sur
les sorties.
Commandes pour débuter
Avant de commencer, il faut savoir que Linux est sensible à la casse (case sensitive en
anglais), c'est à dire qu'il distingue les majuscules des minuscules. Ainsi, pour créer un
répertoire, la commande est 'mkdir', ce n'est pas la peine d'essayer MKDIR ou mKdiR, cela ne
fonctionnera pas. De même, les noms de fichiers et de répertoires sont également sensibles à
la casse. De plus, sous Unix, les chemins sont séparés par des slash : /etc//init/xfs mais jamais
etc\init\xfs.
Répertoires spéciaux :
.
représente le répertoire courant,
.. représente le répertoire parent
~ représente le répertoire maison (home) de l'utilisateur
Fichiers cachés :
Sous Unix, les fichiers cachés commencent par un point. Par exemple, ~/.bashrc est un fichier
caché, dans le répertoire maison de l'utilisateur, qui contient la configuration de son shell.
Jokers : ? et *
Les caractères ? et * dans les noms de fichiers et de répertoires permettent de représenter des
caractères quelconques. '?' représente un seul caractère, tandis que '*' en représente un nombre
quelconque. Par exemple "*.jpg" représente tous les fichiers se terminant par jpg ; "*toto*"
tous les
fichiers contenant "toto".
Il faut également savoir que c'est le shell qui interprète ces caractères avant de transmettre la
ligne de commande. Par exemple, si vous tapez : rm f *.tmp, le shell transformera cette ligne
de commande en : rm truc1.tmp truc2.tmp truc3.tmp.
Commande simple :
Le format d'une commande sous UNIX suit le modèle suivant :
$ nom_de_la_commande -options arguments
En outre, dans une commande, il peut éventuellement y avoir des opérateurs de
redirections. Le premier mot désigne le nom de la commande à exécuter, les options et
arguments forment ce que l'on appelle les "paramètres" de la commande.
La valeur n retournée d'une commande est celle donnée en argument à la commande exit n.
Les chemins de recherche dans l’arborescence du nom d'une commande sont définis dans le
PATH (voir plus loin). Lors du lancement d'une commande, (un programme utilisateur ou
une commande comme date)
l'interpréteur de commandes ou Shell va rendre résident en mémoire le programme
exécutable associé
et lancer son exécution. Nous dirons que le Shell a « créé un processus » ou une tâche.
Le Shell qui a créé le processus attend qu'il soit terminé pour redonner « la main » à
l'utilisateur. Cependant, sous UNIX il est possible de lancer un processus sans avoir à
attendre la fin de son exécution, il suffit, pour cela, d'ajouter l'opérateur & (et commercial) à
la fin de la commande.
L'enchaînement des commandes :
Il est possible d'enchaîner l'exécution des commandes à l'aide de l'opérateur ; (point
virgule).
Exemple :
$ date;who;pwd;ls –l
Chaque commande sera exécutée séquentiellement
Le système de gestion de fichiers :
Le système de fichiers racine (root file system), soit le système de fichiers primaire est associé
au répertoire le plus haut / :
/bin commandes binaires utilisateur essentielles (pour tous les utilisateurs)
/boot fichiers statiques du chargeur de lancement
/dev fichiers de périphériques
/etc configuration système spécifique à la machine
/home répertoires personnels des utilisateurs (optionnel)
/lib bibliothèques partagées essentielles et modules du noyau
/mnt point de montage pour les systèmes de fichiers montés temporairement
/proc système de fichiers virtuel d'information du noyau et des processus
/root répertoire personnel de root (optionnel)
/sbin binaires système (binaires auparavant mis dans /etc)
/sys état des périphériques (model device) et sous-systèmes (subsystems)
/tmp fichiers temporaires
La commande « ls »
La commande ls -l retourne des informations sur les fichiers de la forme :
-rw-r--r-texte.tex
drwxr-xr-x
1 roussel
users
4104 Sep 24 23:07
3 roussel
users
1024 Feb 20
1998 tmp
Le premier champ se divise en quatre parties :
•
•
•
•
Le premier caractère de la ligne indique le type du fichier : - fichier normal, d
répertoire (il existe d'autres types) ;
Les trois caractères suivant déterminent les droits du propriétaire du fichier, ici
roussel ;
Les trois d'après les droits du groupe du propriétaire du fichier, ici users ;
Les derniers les droits des autres utilisateurs.
Les valeurs des trois caractères de droit sont :
•
•
•
r si le fichier (resp. le répertoire) est accessible en lecture (resp. peut être listé) ;
w si le fichier (resp. le répertoire) est accessible en écriture (resp. est ouvert pour la
création de fichiers) ;
x si le fichier (resp. le répertoire) est exécutable (resp. peut être traversé).
Les champs qui suivent sont :
•
•
•
•
•
•
Le nombre de références au fichier.
Le nom du propriétaire du fichier.
Le nom du groupe du propriétaire du fichier.
La taille du fichier en octets.
La date de dernière mise à jour.
La référence du fichier.
Changement des droits d'un fichier
Une des formes pour les options de chmod est dest op droit. Les valeurs possibles de dest
sont :
•
•
•
•
a change les droits pour tout le monde ;
u change les droits pour le propriétaire du fichier ;
g change les droits pour le groupe du propriétaire du fichier ;
o change les droits pour les autres.
Les valeurs possibles de op sont :
•
•
+ ajoute les droits droit pour dest ;
- retire les droits droit pour dest.
Les valeurs principales de droit sont :
•
•
•
r les droits en lecture ;
w les droits en écriture ;
x les droits en exécution.
Téléchargement