Linux est un logiciel libre
Un logiciel est dit libre si son code est couvert par une licence autorisant :
- l’utilisation du logiciel ;
- l’accès public au code source ;
- la modification et la redistribution publique de ces modifications.
Introduction
Il est possible de commander les systèmes d’exploitation de la famille UniX et leurs dérivés (tels OS X et Linux) grâce à un logiciel appelé shell, en ligne de commandes. À l’ère de l’interface graphique et des écrans tactiles, on peut se demander pourquoi continuer à taper des commandes, processus qui semble beaucoup plus long et nécessite un apprentissage préalable. En fait, une fois les commandes maîtrisées, utiliser la ligne de commande s’avère beaucoup plus efficace pour réaliser des tâches non élémentaires.
Exemple de tâche
Se rendre dans un répertoire contenant une multitude d’images dans différents formats, compter le nombre de celles qui sont au format jpeg
et stocker le résultat dans un fichier.
|
|
Essayez de faire le même enchaînement d’opérations depuis une interface graphique, cela prendra sûrement plus de temps.
Invite de commande, commandes et paramètres des commandes
Invite de commande
On appelle Invite de commande le message qui « invite » à entrer une commande dans la console/terminal :
|
|
Ici, il faut comprendre que l’utilisateur mats
est connecté à la machine de nom serveur-ubuntu
et qu’il se situe, dans l’arborescence des fichiers, dans son dossier personnel (représenté par le symbole ~
).
$
final signifie que l’utilisateur mats n’est pas l’administrateur de la machine. Lorsqu’on utilise la machine en tant qu’administrateur, appelé root sous UniX, le symbole terminal est #
.
Commandes
L’invite de commande permet d’entrer des commandes. Le comportement de chacune de ces commandes peut être modifié ou précisé à l’aide d’options*.
Le résultat de la commande, la liste de ses options, leur emploi, etc. font l’objet d’une entrée dans la documentation déjà installée sur le système.
|
|
|
|
Remarque
Lorsque plusieurs options sont utilisées, il est possible de condenser l’écriture de la commande. Par exemple, la commande ls -l -a -R
peut s’écrire : ls -laR
. L’ordre de ces options n’a aucune importance.
De nombreuses aide à la saisie existent :
-
Rappel des dernières commandes entrées : utiliser la touche ↑ du clavier.
-
Autocomplétion des commandes :
- entrer les premiers caractères d’une commande et taper la touche ⇥ deux foix : la liste des commandes commençant par ces caractères apparaît.
- entrer les premiers caractères d’une commande, si cette chaîne est suffisante pour que le système puisse identifier de façon certaine la commande, un appui sur ⇥ complète la commande.
-
Sélection multiple de fichiers : le caractère *, appelé joker est très utilisé.
|
|
- Quelques raccourcis clavier utiles :
- CTR + L : efface le contenu du terminal
- CTRL + A : ramène le curseur au début de la commande
- CTRL + E : ramène le curseur à la fin de la ligne de commandes
- CTRL + U : supprime tout ce qui est à gauche du curseur
- CTRL + K : supprime tout ce qui est à droite du curseur
- CTRL + W : supprimer le premier mot situé à gauche du curseur
- CTRL + Y : si du texte a été supprimé à l’aide d’une des commandes précédentes, ce texte est copié à l’endroit où se trouve le curseur.
Les fichiers
Qu’est-ce qu’un fichier ?
Rappel
Le contenu des variables disparaît à chaque fin d’exécution d’un programme (ou du bloc d’instructions dans lequel la variable est définie). Les fichiers sont stockés sur des périphériques à mémoire de masse (disquette, disque dur, CD Rom, clé USB, etc.).
En informatique, on utilise le terme fichier pour décrire trois notions bien distinctes :
-
Le fichier physique, succession de 0 et de 1 sur un support physique (disque dur, disque optique, etc.).
-
Le fichier logique, objet informatique que nous présente le système d’exploitation. Cet objet est une image du fichier physique. Les fichiers logiques sont organisés sous forme d’une arborescence qui dépend du système d’exploitation utilisé, et sont repérés par un nom auquel on accole une extension (.py pour un fichier source Python, .jpeg pour une image au format JPEG (acronyme de Joint Photographic Experts Group), .exe pour un fichier exécutable, etc.). Généralement, un fichier logique possède des attributs gérés par le système d’exploitation (qui a le droit de le lire, de le modifier, de le détruire, etc.).
-
L’objet qui, dans un langage de programmation, est associé au fichier logique. Nous avons tel objet en Python.
Fichier physique
Le nombre de bits qu’un périphérique de masse peut stocker est appelé sa capacité. Un disque d’un téraoctet (symbole To) peut stocker $2^{40}$ mots de 8 bits.
Organisation des fichiers logiques en une arborescence
Les fichiers logiques sont organisés sous forme d’une arborescence :
graph TD A(".") --> B("bin") A --> C("boot") A --> D("dev") A --> E("etc") A --> F("home") A --> G("lib") A --> H("media") A --> I("root") A --> J("sbin") A --> K("tmp") A --> L("usr") A --> M("var") F --> FA("user1") F --> FB("LLM") FB --> FBA("student1") FB --> FBB("student2") FB --> FBC("student3") FBB --> FBBA("Documents") FBB --> FBBB("Images") FBB --> FBBC("Musique") FBB --> FBBD("Bureau") FBB --> FBBE("Téléchargements") FBB --> FBBF("Vidéos") FBBA --> FBBAA("NSI") FBBA --> FBBAB("PC")
Chemin d’un fichier
Repérer un fichier logique dans l’arborescence consiste à donner son chemin dans cette arborescence :
- Chemin absolu d’un fichier.
- Dans une arborescence, le chemin (absolu) d’un fichier est la liste des noms des nœuds de la branche qui va de la racine de l’arborescence jusqu’au fichier en question.
|
|
- Chemin relatif d’un fichier.
- Lorsque le chemin qui conduit au fichier ne débute pas au niveau de la racine mais depuis l’endroit dans lequel on se trouve dans l’arborescence, le chemin est dit relatif.
|
|
Peut-on parler du chemin d’un dossier ?
Sous Unix, tout n’est que fichier : en particulier, un dossier est un fichier qui contient la liste des fichiers placés plus bas que lui dans l’arborescence. On exprime donc le chemin d’un dossier de la même façon que celle d’un fichier.
Quelques commandes de déplacement dans l’arborescence des fichiers et de manipulation des fichiers
-
pwd
(print working directory) : affiche le chemin absolu de l’endroit où l’on se trouve dans l’arborescence du système de fichiers. -
which nom_commande
: affiche le chemin absolu de l’emplacement de la commandenom_commande
dans le système de fichiers. -
ls
: liste le contenu du dossier courant.- Options utiles :
a
(all) : les fichiers cachés sont inclus dans l’affichage ;l
(long) : affiche toutes les informations (droits, types, etc.) ;F
: ajoute un/
à la fin des noms des dossiers afin de les mettre en évidence ;h
(human readable) : utilisé avec l’optionl
exprime les tailles en multiples d’octets ;S
: trie le résultat final par taille des fichiers décroissante ;t
: trie les fichiers par date de dernière modification ;r
: renverse l’ordre de tri des deux paramètres précédents ;R
(recursive) : affiche le contenu des sous-dossiers.
- Options utiles :
-
cd
(change directory) : permet de se déplacer dans l’arborescence. Le chemin passé en argument peut être absolu ou relatif. -
du
(disk usage) : donne la taille occupée par les répertoires situés plus bas dans l’arborescence que le point d’où est lancée la commande.- Options utiles :
h
(human readable) : les tailles sont affichées en multiples d’octets ;a
: les dossiers et les fichiers sont pris en compte ;s
: seul le résultat final est affiché.
- Options utiles :
-
cat
: affiche le contenu d’un fichier texte à l’écran. -
less
: affiche le contenu d’un fichier texte à l’écran, page par page. Taper sur la touche Espace pour passer à la page suivante, la touche b pour passer à la page précédente et la touche q pour quitter. -
touch
: permet de créer un fichier vide (ou de mettre à jour la date de modification). -
mkdir
(make directory) : crée le dossier dont le nom est passé en argument.- Option utile :
p
: créé un sous-dossier et tous les sous-dossiers intermédiaires si nécessaire.
- Option utile :
-
cp
(copy) : copie un fichier ailleurs dans l’arborescence.- Option utile :
r
: permet de copier un dossier et les fichiers contenus dans ce dernier.
- Option utile :
-
mv
(move) : déplace un fichier ou un dossier dans l’arborescence. -
mv
: renomme un fichier ou un dossier. -
rm
(remove) : supprime un fichier.- Options utiles :
i
: demande confirmation avant toute action ;f
(force) : la suppression est effectuée quoi qu’il arrive ;v
(verbose) : affiche toutes les informations ;r
(recursive) : supprime un dossier et tout son contenu.
- Options utiles :
-
rmdir
(remove directory) : supprime un dossier vide.
Méta-données d’un fichier logique
La commande ls -l
permet d’obtenir un certain nombre d’informations sur les fichiers (ou dossiers) :
|
|
|
|
On peut décomposer cette sortie de la sorte :
- |
rw- |
rw- |
r-- |
1 |
ubuntu | ubuntu | 74K | Dec 9 18:40 | t2png-2.gif |
1 | 2 | 3 | 8 | 4 | 6 | 7 | 8 | 9 | 10 |
- Type de fichier :
-
ordinaire,d
répertoire,l
lien symbolique. - Droits de l’utilisateur propriétaire (généralement le créateur du fichier) :
rwx
droits de lecture (read), d’écriture (write) et d’exécution (execute) si programme. - Droits du groupe propriétaire (généralement celui du créateur du fichier) :
rwx
droits de lecture (read), d’écriture (write) et d’exécution (execute) si programme. - Droits de tous les utilisateurs de l’ordinateur :
rwx
droits de lecture (read), d’écriture (write) et d’exécution (execute) si programme. - Nombre de liens « durs ». C’est le nombre de noms de fichiers qui référencent ce fichier.
- Identifiant du propriétaire du fichier.
- Identifiant du groupe propriétaire du fichier.
- Taille du fichier en octets.
- Date de dernière modification du fichier.
- Nom du fichier.
Travail
Notions de base
- Soit l’invite de commande suivante :
|
|
Quelles informations nous fournit cette invite de commande ?
-
Comment rappeler la dernière commande saisie au clavier ?
-
Un programme exécutable est-il un fichier spécial ?
-
Les extensions des fichiers ont-elles une signification particulière sous Linux ?
-
Dans la liste suivante, indiquer les chemins absolus :
|
|
- Où que l’on se situe dans le système de fichiers, quel est l’effet de la commande :
|
|
-
Pour lister de manière récursive tous les fichiers — sans exception — présents dans
/usr
, quelle commande faut-il taper ? -
Dans un répertoire contenant une multitude de fichiers, comment afficher la liste détaillée des fichiers, les derniers modifiés apparaissant en dernier dans cette liste (en bas de l’écran) ?
-
Pour créer le plus simplement possible, dans son dossier personnel, des sous-dossiers formant le chemin suivant :
programmes/python/backup
, il faut taper :
|
|
- Une fois les sous-dossiers de la question précédente créés, la commande qui suit supprime-t-elle le sous-dossier
python
.
|
|
- Pour déplacer un répertoire et son contenu dans un sous-répertoire, quelle commande taper ?
|
|
- Quel est l’effet de la commande
rm -rf /
exécutée en tant que simple utilisateur ?- Tout le système de fichier est détruit.
- Aucun effet car l’utilisateur n’a pas le droit de supprimer la racine du système de fichiers.
- Une erreur est retournée car seul l’administrateur a le droit d’utiliser cette commande.
- Tous les fichiers et répertoires de l’utilisateur sont supprimés.
Manipulations de base dans le système de fichiers
Depuis votre dossier personnel, créez un dossier NSI
et entrez dans ce dossier.
- Affichez votre position dans le système de fichiers.
- Créez la structure suivante en deux commandes :
|
|
- Déplacez-vous dans le répertoire
dossier1
en utilisant un chemin absolu et créez-y le fichier videfichier1
. - Copiez le fichier
fichier1
dans le répertoiredossier3
en utilisant un chemin relatif. - Déplacez-vous dans le dossier
dossier2
en utilisant un chemin relatif. - Copiez le fichier
fichier1
dans le répertoiredossier5
en le renommantfichier2
. - Déplacez le fichier
fichier2
dans le répertoiredossier4
en le renommantfichier3
. - Supprimez le fichier
fichier1
du répertoiredossier3
. - Retournez dans votre dossier personnel et supprimez tous les fichiers et dossiers qui viennent d’être créés.
À la recherche du texte perdu
Le répertoire MetaCaracteres
vous est fourni. Avec la commande ls MetaCaracteres
, vous constaterez alors que ce répertoire contient de très nombreux fichiers. Les méta-caractères permettent de définir des motifs à partir desquels une sélection des éléments affichés peut être effectuée.
Motifs possibles
-
*
: représente n’importe quelle suite de caractères (vide ou non) ; -
?
: représente n’importe quel caractère (exactement un) ; -
[liste de caractères]
: représente n’importe quel caractère de la liste (exactement un). La liste peut-être un intervalle (a-z
par exemple), le code ASCII des caractères est pris en considération pour définir les caractères appartenant à l’intervalle ; -
[^liste de caractères]
: représente n’importe quel caractère qui n’est pas dans la liste (exactement un).
Exemples
|
|
Donner la signification de chacun des motifs suivants :
*.jpg
[0-9]*[a-z]
*.???
*[^A-Z]*
?????
?*?
*[^.]???
Tester les réponses dans un terminal. Pour ce faire, créer dans un dossier un certain nombre de fichiers vides à l’aide de la commande touch nom_fichier
(utiliser tous les noms possibles et imaginables).
Réponses
- Tous les noms qui se terminent par
.jpg
. - Tous les noms qui commencent par un chiffre et se terminent par une lettre en minuscule.
- Tous les noms qui possèdent une extension (après le
.
) composée de trois caractères exactement. - Tous les noms qui en contiennent aucune lettre en majuscule.
- Tous les noms formés de cinq caractères.
- Tous les noms formés d’au moins deux caractères.
- Tous les noms formés d’au moins quatre caractères et dont le quatrième caractère en partant de la droite n’est pas un point.
Dossier compressé à télécharger
- Déterminez les éléments du répertoire
MetaCaracteres
dont le nom correspond à chacun des motifs suivants et expliquez brièvement les caractéristiques des éléments affichés.
|
|
- L’énoncé de cette question se trouve dans le fichier
MetaCaracteres/questionTP1.txt
. La commande cat suivie d’un nom de fichier vous permettra d’afficher le contenu du fichier, et donc de pouvoir le lire et de suivre les indications que vous y trouverez.