TP 6 Linux
Les commandes Shell (Bash Shell)
Les liens, la redirection et les pipes
Enseignante: MANSOUR Sihem
Contact : sihemmansour@[Link]
[Link]@[Link]
Les inodes
Définition d’un inode
Sous linux, chaque fichier est représenté par un inode caractérisé par un
identifiant unique. Voir l’exemple:
Chaque inode contient les informations suivantes:
le bloc de disque où est la donnée est stockée, le type de fichier, la taille du
fichier, l’identifiant du propriétaire
L’identifiant du groupe, les autorisations de lecture, d’écriture et d’exécution,
Heure du dernier accès, Heure de la dernière modification
2 Ens: MANSOUR Sihem
Les liens
Sous linux, il existe deux types de liens: lien physique et lien
symbolique.
Lien physique:
Donc si on explique encore plus, un inode est le fichier avec ces
différentes caractéristiques (contenu, propriétaire, groupe, droit
d’accès, etc..), cet inode peut avoir plusieurs noms sur le système,
Pour savoir si un inode a plusieurs noms sur le système, taper ls –l
nom_inode
Dans notre exemple l’inode f15 a trois noms
3 Ens: MANSOUR Sihem
Les liens
L’attribution du nom pour un inode se fait via la création d’un lien
physique.
La création du lien physique se fait via la commande suivante:
ln inode lienpysique(nouveauNom)
Voir l’exemple:
La suppression de l’inode se fait lorsque on supprime tous les liens
physiques sur lui sous le système
4 Ens: MANSOUR Sihem
Les liens
La création du lien physique a deux objectifs:
le premier objectif est l'attribution de plusieurs noms à un contenu
précieux comme ça on garantit sa conservation.
Le deuxième objectif est l'assurance du travail collaboratif sur un
fichier, chaque utilisateur travaille sur un nom dans son espace du travail
et tous travaillent sur le même contenu
5 Ens: MANSOUR Sihem
Les liens
Un lien physique ne peut pas
relier deux fichiers situés sur des partitions différentes.
être créé sur un dossier et sur des fichiers spéciaux comme les
sockets, les pipes, et les device files.
Être appliqué sur des systèmes de fichiers non compatibles comme
FAT32, exFAT ( des systèmes de fichiers de clés USB, cartes SD et
disques externes)
6 Ens: MANSOUR Sihem
Les liens
Liens symboliques
Les liens symboliques ressemblent plus aux « raccourcis » dont vous
avez peut-être l'habitude sous Windows. La plupart du temps, on crée
des liens symboliques sous Linux pour faire un raccourci.
Le principe du lien symbolique est que l'on crée un lien vers un autre
nom de fichier. Cette fois, on pointe vers le nom de fichier et non pas
vers l'inode directement .
Voir le graphique suivant:
7 Ens: MANSOUR Sihem
Les liens
Dans l’exemple ci-dessous on va créer un lien symbolique f2 sur le
fichier f1. On utilise là encore la commande ln, mais avec le paramètre
-s
8 Ens: MANSOUR Sihem
Les liens
Pour avoir des informations sur le fichier f2, taper la commande ls –l. voir l’exemple:
D’après l’exemple, le lien symbolique prend la lettre l comme type de ressource
La présence de flèche dans le resultat de commande prouve que f2 est un raccouci sur f1
Si on supprime f2, rien ne se passe pour f1. sinon si on supprime f1, f2 devient
un raccourci endommagé.
9 Ens: MANSOUR Sihem
Les liens
Voici un tableau récapitulatif qui résume les principales différences entre les deux liens:
10 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
find: une recherche apronfondie
find est la commande de recherche par excellence pour retrouver
des fichiers, mais aussi pour effectuer des opérations sur chacun
des fichiers trouvés. Elle est très puissante, permet donc de faire
beaucoup de choses, et par conséquent… elle est un peu
complexe.
Contrairement à locate, find ne va pas lire dans une base de données
mais au contraire parcourir tout votre disque dur.
11 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Utilisation basique de la commande find:
Recherche à partir du nom
Exemple:
Le -name " f1" est un paramètre qui demande de retrouver un
fichier qui s'appelle très exactement f1
Comme nous n'avons pas précisé où rechercher, find a
cherché dans le répertoire dans lequel nous nous trouvions
et dans ses sous-répertoires. Le ~
12 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Maintenant, nous allons préciser le chemin d’accès ou on va
faire la recherche:
Notez que, contrairement à locate, find récupère uniquement la
liste des fichiers qui s'appellent exactement comme demandé.
Ainsi, s'il existe un fichier nommé syslog2, il ne sera pas listé
dans les résultats. Pour qu'il le soit, il faut utiliser le joker :
l'étoile « * »
13 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Si vous voulez chercher un fichier sur tout le disque dur,
utilisez le chemin d’accès /
Recherche à partir de la taille:
On peut faire des recherche sur les fichiers à partir de leur
taille:
14 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Au lieu de se baser sur le nom, on se base ici sur la taille (-size).
Le +10M indique que l'on recherche des fichiers de plus de 10
Mo. On peut aussi utiliser k pour les Ko, G pour les Go, etc.
Vous pouvez aussi utiliser un moins « - » à la place du « + »
pour obtenir par exemple les fichiers de moins de 10 Mo. Et si
vous enlevez le « + », la commande cherchera des fichiers de
10 Mo exactement (ni plus, ni moins).
15 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Recherche à partir de la date
Vous êtes sûrs d'avoir accédé à votre rapport au format .odt il y
a moins de 7 jours, mais vous n'arrivez pas à le retrouver ?
Avec -atime, vous pouvez indiquer le nombre de jours qui vous
séparent du dernier accès à un fichier.
Exemple:
16 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Recherche uniquement des répertoires ou fichiers:
On peut aussi rechercher uniquement des répertoires ou des
fichiers. Utilisez :
-type d : pour rechercher uniquement des répertoires
(directories) ;
-type f : pour rechercher uniquement des fichiers (files).
17 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Par défaut, find cherche des répertoires ET des fichiers. Ainsi,
si vous avez un fichier appelé syslog et un répertoire appelé
syslog, les deux résultats seront affichés. Pour obtenir
uniquement les répertoires qui s'appellent syslog (et non pas les
fichiers), tapez donc :
18 Ens: MANSOUR Sihem
La recherche des fichiers sous
Linux
Supprimer les fichiers trouvés
Un des usages les plus courants de find, à part retrouver des
fichiers, consiste à les supprimer. Si je veux faire le ménage
dans mon home et par exemple supprimer tous mes fichiers «
jpg », je vais écrire ceci :
19 Ens: MANSOUR Sihem
Recherche d’un texte dans un
fichier
grep
La recherche d'une chaîne de caractères dans un ou plusieurs
fichiers peut se faire à l'aide de la commande grep.
Cette commande prend en premier paramètre le texte à
rechercher, puis la liste des fichiers dans lequel ce texte doit être
trouvé :
grep texte fichiers
Le texte peut être placé entre guillemets si nécessaire (en
particulier, s'il contient des espaces ou des caractères interprétés
par le shell, comme * et ?)
20 Ens: MANSOUR Sihem
Recherche d’un texte dans un
fichier
La commande grep possède plusieurs options, exemple:
-n: affiche le numéro de la ligne qui contient le texte
-l: affiche tous les fichiers qui contiennent le texte
-i: pour ignorer la casse
-v : inverser la recherche, c’est-à-dire on cherche toutes les
données (lignes ou fichiers) qui ne contiennent pas le critère
voulu
-r : rechercher dans tous les fichiers et sous-dossiers
21 Ens: MANSOUR Sihem
Trier des lignes
sort
La commande sort permet de trier des lignes du fichier.
Remarque: La commande sort ne respecte pas la casse
On va créer le fichier text sous notre répertoire personnel qui
contient les informations suivantes:
o Ariana
o Kelibia
o Bizerte
o Sfax
o Gabes
22 Ens: MANSOUR Sihem
Trier des lignes
Pour se faire utiliser l’éditeur nano.
Ensuite, on va exécuter la commande sort sur ce fichier :
23 Ens: MANSOUR Sihem
Trier des lignes
La commande sort supporte plusieurs options:
-o: écrire le résultat de tri dans un autre fichier. En faite
cette commande ne modifie pas le fichier, juste elle affiche
son contenu trié sur le console. Si on veut mettre le résultat
dans un fichier au lieu de l’afficher utiliser l’option -o
-r: inverser le tri
24 Ens: MANSOUR Sihem
Compter les lignes
Wc:
La commande wc signifie word count. C'est donc a priori un
compteur de mots mais en fait, on lui trouve plusieurs autres
utilités : compter le nombre de lignes (très fréquent) et
compter le nombre de caractères. la commande wc travaille
sur un fichier.
Exemple d’utilisation:
25 Ens: MANSOUR Sihem
Compter les lignes
Ces trois nombres signifient, dans l'ordre :
le nombre de lignes.
le nombre de mots.
le nombre d'octets.
Cette commande comporte plusieurs options:
-l : compter le nombre de lignes:
-w : compter le nombre de mots
-c : compter le nombre d’octets
-m : compter le nombre de caractères
26 Ens: MANSOUR Sihem
Supprimer les doublons
uniq
Parfois, certains fichiers contiennent des lignes en double et on
aimerait pouvoir les détecter ou les supprimer. Pour se faire on
peut utiliser La commande uniq
Nous devons travailler sur un fichier trié. En effet, la
commande uniq ne repère que les lignes successives qui sont
identiques.
Je vous propose de créer un fichier doublons contenant les
noms suivants :
27 Ens: MANSOUR Sihem
Supprimer les doublons
on va utiliser La commande uniq , pour afficher le contenu de
ce fichier sans doublons
28 Ens: MANSOUR Sihem
Supprimer les doublons
Si vous voulez transmettre le résultat de la commande uniq à
un fichier au lieu de l’afficher, vous pouvez procéder de la
façon suivante
La commande uniq comporte plusieurs options:
-c : compter le nombre d'occurrences
-d : afficher uniquement les lignes présentes en double
29 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
1. Assembler des fichiers dans un archive:
Généralement, on assemble des fichiers dans un archive (un fichier
.tar) pour les compresser par la suite. Pour faire l’archivage des
fichiers, utiliser la commande tar
Consigne: vaut-mieux mettre les fichiers à archiver dans un
dossier avant l’archivage
30 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
2. Gestion de l’archivage
commencer par créer un dossier qui contient tous les fichiers à
archiver
Accéder à ce dossier et mettre vos fichiers
Créer votre archive
31 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
1. Gestion de l’archivage
Les options utilisées avec la commande tar, sont:
-c: signifie créer une archive tar
-v: afficher les détails des opérations
-f : rassembler l’archivage dans un fichier
Pour afficher le contenu d’un archivage:
32 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
1. Gestion de l’archivage
Extraire des fichiers de l’archive
On va commencer par supprimer le dossier essai :
33 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
1. Gestion de l’archivage
Extraire des fichiers de l’archive
Puis extraire nos fichiers de l’archive
34 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
3. Comment compresser l’archivage ou les fichiers
Pour la compression on a deux programmes qui existent par
défaut gzip et bzip2(plus lent que gzip mais plus efficace), dans
notre cours on va voir gzip
Pour compresser une archive ou un fichier avec gzip, utiliser cette
commande
Le fichier résultat est .gz
35 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
4. Comment décompresser l’archivage
utiliser la commande gunzip
36 Ens: MANSOUR Sihem
Archiver et compresser des
fichiers sous ubuntu
5. Utiliser unrar pour compresser/décompresser des
fichier:
Commencer par installer unrar
Pour décompresser des fichier rar, utiliser la commande unrar
avec l’option e
Pour compresser, il faut acheter le logiciel
37 Ens: MANSOUR Sihem
Lancer plusieurs commandes
sur la même ligne de commande
Pour lancer plusieurs commandes sur la même invite, procéder
de la façon suivante:
38 Ens: MANSOUR Sihem
Lancer plusieurs commandes sur la même
ligne de commande: Exécution séquentielle
Les commandes sont exécutées l'une après l'autre, indépendamment du
succès ou de l'échec de la commande précédente.
Syntaxe:
Exemple:
39 Ens: MANSOUR Sihem
Lancer plusieurs commandes sur la même
ligne de commande: Exécution conditionnelle
(1)
Les commandes suivantes ne sont exécutées que si la commande
précédente réussit (c'est-à-dire retourne un code de sortie égal à 0).
Syntaxe:
Exemple:
40 Ens: MANSOUR Sihem
Lancer plusieurs commandes sur la même
ligne de commande: Exécution conditionnelle
(2)
Les commandes suivantes ne sont exécutées que si la commande
précédente échoue (retourne un code de sortie différent de 0).
Syntaxe:
Exemple:
41 Ens: MANSOUR Sihem
Les flux de redirection
rediriger le résultat :
Rediriger le résultat d’une commande dans un fichier
lorsqu’on tape une commande Shell, le résultat s’ affiche par
défaut sur la console.
Avec Shell, on peut orienter la sortie d’une commande et au
lieu de l’afficher sur la console on peut l’enregistrer dans un
fichier.
voir les graphiques suivant:
42 Ens: MANSOUR Sihem
Les flux de redirection
L’opérateur > diriger le résultat de ls vers le fichier t1, si ce fichier
n’existe pas il va être créé automatiquement et si il existe son contenu
va être supprimé et remplacé par le résultat de cette commande
43 Ens: MANSOUR Sihem
Les flux de redirection
rediriger le résultat à la fin du fichier: >>
Le double chevron >> sert lui aussi à rediriger le résultat dans
un fichier, mais cette fois à la fin de ce fichier.
Avantage : vous ne risquez pas d'écraser le fichier s'il existe
déjà. Si le fichier n'existe pas, il sera créé automatiquement.
44 Ens: MANSOUR Sihem
Les flux de redirection
Résumé
Nous venons de découvrir deux flux de redirection dans des
fichiers :
> : redirige dans un fichier et l'écrase s'il existe déjà ;
>> : redirige à la fin d'un fichier et le crée s'il n'existe pas.
45 Ens: MANSOUR Sihem
Les flux de redirection
rediriger les erreurs :
introduction
Il faut savoir que toutes les commandes produisent deux flux de
données différents.
la sortie standard : pour tous les messages (sauf les erreurs) ;
la sortie d'erreurs : pour toutes les erreurs.
Prenons un exemple: Supposons que vous fassiez un cat du fichier
[Link] pour afficher son contenu. Il y a deux possibilités :
si tout va bien, le résultat (le contenu du fichier) s'affiche sur la
sortie standard ;
s'il y a une erreur, celle-ci s'affiche dans la sortie d'erreurs.
46 Ens: MANSOUR Sihem
Les flux de redirection
Voir le graphique suivant:
47 Ens: MANSOUR Sihem
Les flux de redirection
Rediriger l’erreur dans un fichier à part
Si vous voulez enregistrer les erreurs dans un fichier à part
pour ne pas les oublier et pour pouvoir les analyser ensuite.
Pour se faire, utiliser l'opérateur 2>
Exemple:
48 Ens: MANSOUR Sihem
Les flux de redirection
Il y a deux redirections ici :
> [Link] : redirige le résultat de la commande (sauf les erreurs) dans le
fichier [Link]. C'est la sortie standard ;
2> [Link] : redirige les erreurs éventuelles dans le fichier [Link]. C'est la
sortie d'erreurs.
Vous pouvez vérifier : si fichier_inexistant n'a pas été trouvé, l'erreur aura
été inscrite dans le fichier [Link] au lieu d'être affichée dans la console.
Notez qu'il est aussi possible d'utiliser 2>>,pour ajouter les
erreurs à la fin du fichier. Ens: MANSOUR Sihem
49
Les flux de redirection
Fusionner les sorties
Si Parfois, on n'a pas envie de séparer les informations dans
deux fichiers différents. Heureusement, il est possible de
fusionner les sorties dans un seul et même fichier. Comment ?
Il faut utiliser le code suivant : 2>&1.
Cela a pour effet de rediriger toute la sortie d'erreurs dans la
sortie standard. Traduction pour l'ordinateur : « envoie les
erreurs au même endroit que le reste ».
50 Ens: MANSOUR Sihem
Les flux de redirection
Exemple:
On va envoyer les deux sorties ( standard et erreur) de cette
commande vers le fichier [Link]
L’utilisation > dans cette commande veut dire créé le fichier
[Link] si il n’existe pas et si il existe écrase son contenu et le
remplace par le nouveau résultat, toute fois si on veut écrire à la
fin de fichier, on doit utiliser >>
51 Ens: MANSOUR Sihem
Les flux de redirection
Résumé
Nous avons découvert trois symboles :
2> : redirige les erreurs dans un fichier (s'il existe déjà, il sera écrasé) ;
2>> : redirige les erreurs à la fin d'un fichier (s'il n'existe pas, il sera créé)
2>&1 : redirige les erreurs au même endroit et de la même façon que la
sortie standard.
Le tout est illustré sur la figure suivante.
52 Ens: MANSOUR Sihem
Les flux de redirection
Lire de puis un fichier ou le clavier :
introduction
La rentrée d’une commande Shell peut être prise à partir d’un
fichier ou d’une saisie au clavier
53 Ens: MANSOUR Sihem
Les flux de redirection
Lire depuis un fichier : <
Le chevron ouvrant < permet d'indiquer d'où vient l'entrée
qu'on envoie à la commande.
Exemple
Vous remarquez bien que il n’y a pas une différence dans le
résultat entre la commande cat text et cat < text
54 Ens: MANSOUR Sihem
Les flux de redirection
Mais dans le traitement est différent:
Si vous écrivez cat text, la commande cat reçoit en
entrée le nom du fichier text qu'elle doit ensuite se
charger d'ouvrir pour afficher son contenu.
Si vous écrivez cat < text, la commande cat reçoit le
contenu de text qu'elle se contente simplement d'afficher
dans la console. C'est le shell qui se charge d'envoyer le
contenu de text à la commande cat.
55 Ens: MANSOUR Sihem
Les flux de redirection
Lire depuis le clavier: <<
Le double chevron ouvrant << fait quelque chose d'assez
différent : il vous permet d'envoyer un contenu à une
commande depuis votre clavier.
Exemple:
56 Ens: MANSOUR Sihem
Les flux de redirection
57 Ens: MANSOUR Sihem
Les flux de redirection
Résumé
Nous pouvons donc « alimenter » des commandes de deux
manières différentes, comme le montre la figure suivante :
< : envoie le contenu d'un fichier à une commande ;
<< : passe la console en mode saisie au clavier, ligne par ligne.
Toutes ces lignes seront envoyées à la commande lorsque le
mot-clé de fin aura été écrit.
58 Ens: MANSOUR Sihem
Les flux de redirection
Les pipes ou chainage des commandes:
Les pipes ou Chainage des commandes c-a-d connecter la
sortie d'une commande à l'entrée d'une autre commande.
Exemple:
59 Ens: MANSOUR Sihem
Les flux de redirection
Cette commande exécutée tout seule. Ne peut pas donnée un
résultat clair.
Si on trie le résultat retourné par de cette commande puis
l’afficher page par page. Ce dernier ça va être plus clair. Pour se
faire, on va utiliser les pipes:
60 Ens: MANSOUR Sihem
Ens: MANSOUR Sihem