Linux - Commandes de base
Introduction
Nous verrons dans ce TP les commandes de base d’un système de type Unix comme Linux ou MacOS. Il existe des commandes similaires sous Windows mais leurs noms sont différents et surtout, peu de personnes utilisent la ligne de commande avec Windows. Nous utiliserons le terme Linux dans toute la suite car c’est le système de type Unix le plus répandu.
Arborescence
Avant de parler des commandes, il faut d’abord comprendre l’arborescence sous Linux. L’avantage est que c’est la même sur tous les systèmes et que cela na presque pas changé depuis 30 ans.
/
est la racine.
Tout chemin qui commence par /
est dit absolu.
Les éléments du chemin sont séparé par un slash : /
.
Il y a toujours les mêmes répertoires à la racine :
/
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── snap
├── srv
├── sys
├── tmp
├── usr
└── var
Il ne faut pas connaître l’utilité de chacun de ces répertoires. Si vous n’êtes pas administrateur vous n’aurez à faire qu’aux répertoires suivants :
/home
: le répertoire contenant tous les répertoires des utilisateurs ;/media
: c’est ici que les périphériques comme les clés usb apparaissent lorsqu’ils sont connectés à l’ordinateur ;/tmp
: il contient les fichiers temporaires du système ;/var
: contient tous ce qui est changeant (par exemple des pages web).
/home/login
est votre répertoire personnel.
Chaque utilisateur en possède un à son nom, toujours dans le répertoire /home
.
Tout ce qui vous concerne est dans ce répertoire : vos fichiers, votre bureau, votre historique internet, vos préférences.
~
est un alias (raccourci) pour votre répertoire personnel.
Un chemin relatif est un chemin qui part du répertoire courant.
On utilise ..
pour remonter au dossier parent.
Le .
correspond au dossier courant.
1) Quel est le répertoire personnel d’un utilisateur qui s’appelle « michel » ?
/home/michel
2) On considère l’arborescence suivante :
/
├── home
│ ├── eleve
│ │ └── fichier.txt
│ └── administrateur
├── lost+found
├── media
└── var
└── www
└── index.html
- Quel est le chemin absolu vers
fichier.txt
? - Quel est le chemin absolu vers
index.html
? - Quel est le chemin relatif depuis
administrateur
versfichier.txt
? - Quel est le chemin relatif depuis
eleve
versindex.html
?
/home/eleve/fichier.txt
/var/www/index.html
../eleve/fichier.txt
../../var/www/index.html
Console
Une console est un écran attendant des instructions, on y accède avec les touches Ctrl + Alt + Fx
ou x est un chiffre entre 1 et 6.
Il faut faire Ctrl + Alt + F2
pour revenir à l’interface graphique.
La console n’étant pas très pratique on lui préfère souvent un terminal qui est une fenêtre avec une console à l’intérieur. Vous utiliserez le terminal de votre choix (Terminal, Tilix…) :
Il existe plusieurs interpréteurs de commande (shell), nous utiliserons celui fourni par défaut et le plus répandu : bash.
L’invite de commande se présente sous la forme :
login@ordi:repertoire_courant$
Vous pouvez alors saisir des commandes.
Dans la suite, les commandes seront précédées par $
pour indiquer qu’elles doivent être saisies dans le shell.
Astuce : tab
(la touche tabulation) complète automatiquement le nom ou l’arborescence s’il est unique.
tab
tab
affiche toutes les possibilités.
Astuce : il est possible de remonter dans l’historique des commandes avec ↑.
Commande
Pour lancer une commande, il suffit de mettre son nom dans le shell et d’appuyer sur entrée.
3) Essayez les commandes suivantes et donnez ce qu’elles font (on les reverra plus tard) :
date
pwd
who
ls
xeyes
- Donne la date ;
- Affiche le répertoire courant ;
- Donne la liste des utilisateurs connectés ;
- Liste le contenu du répertoire courant.
Une commande peut avoir un ou plusieurs paramètres. Ils sont en général séparés par des espaces.
4) Essayez la commande suivante et dire ce qu’il se passe :
$ echo "toto"
Elle affiche toto
.
Une commande peut avoir des options. Bien souvent les options sont des lettres précédées un tiret ou des mots précédé de deux tirets. On peut éventuellement mettre plusieurs options derrière le même tiret.
5) Essayer la commande suivante et expliquez ce qu’elle produit :
$ python3 -V
Elle affiche la version de Python.
Enfin, il existe une commande qui permet de voir le manuel de n’importe quelle commande : man
.
6) Essayez les commandes suivantes et corrigez vos réponses à la question 3 :
$ man ls
$ man pwd
$ man who
Commandes de base
man (manuel)
Affiche la page de manuel d’une commande (q pour quitter)
man ls
affiche la page de manuel de la commande ls
pwd (print working directory)
Renvoie le chemin absolu du répertoire courant.
ls (list segment)
Affiche le contenu d’un répertoire.
ls -a
affiche les fichiers cachés
ls -l
affiche les informations détaillées
ls -h
affiche la taille des fichiers de façon lisible
cd (change directory)
Permet de naviguer dans les répertoires
cd /usr/bin
se place dans le répertoire /usr/bin
cd
ou cd ~
se place dans le répertoire de l’utilisateur
cd ..
remonte d’un répertoire
cd -
revient au répertoire précédent
cp (copy)
Permet de copier des fichiers ou des répertoires
Option : -r copie un répertoire et tout son contenu (récursif)
cp fichier destination/
copie fichier dans le répertoire destination
cp -r rep/ destination/
copie rep et tout son contenu dans le répertoire destination
cp -r rep/* destination
copie le contenu de rep/ dans le répertoire destination
mv (move)
Permet de déplacer ou renommer des fichiers
mv fichier destination/
déplace fichier dans le répertoire destination
mv fichier destination/fichier2
déplace et renomme fichier dans le répertoire destination
mv rep1 rep2
renomme rep1 en rep2 (Attention, si rep2 existe, rep1 sera déplacé dans rep2)
mv /var/www .
déplace le répertoire /var/www dans le répertoire courant.
rm (remove)
Permet de supprimer des fichiers et des répertoires
Option :
-r supprime un dossier et tout ce qu’il contient
-f ne demande pas de confirmation avant d’effacer
rm fichier
supprime fichier
rm -rf rep/
supprime le répertoire rep et tout ce qu’il contient sans rien demander
rm -rf /*
supprime tous les fichiers de l’ordinateur (ne pas tester, l’ordinateur serait inutilisable !)
mkdir (make directory)
Créer un répertoire
mkdir rep
crée le répertoire rep
rmdir (remove directory)
Supprime un répertoire vide (moins risqué que rm -r)
rmdir rep
supprime le répertoire rep s’il est vide
touch
Créer un fichier vide
touch fiche
crée le fichier fiche
cat (concatenate)
Affiche le contenu d’un fichier (peut faire d’autres choses aussi)
more
Affiche le contenu d’un fichier page par page
7) En utilisant la commande man, trouver la fonction des commandes head
et tail
.
head
affiche les dix premières lignes d'un fichier.
tail
affiche les dix dernières lignes d'un fichier.
8) Quels sont les auteurs de la commande ls
?
Richard M. Stallman et David MacKenzie
9) Lister le contenu du répertoire /etc
et donner 3 répertoires qui s’y trouvent.
python3
vim
et emacs
10) Dans votre répertoire personnel, créez un répertoire toto puis un sous-répertoire titi. Créez dans titi un fichier tata. Appelez le professeur.
Commandes supplémentaires
top
Permet de voir la charge cpu et les processus actifs
nano
Éditeur de texte.
Ctrl + s
pour sauvegarder et Ctrl + x
pour quitter.
11) Écrivez « Coucou » dans le fichier tata.
Scripts bash
Tout ce qui suit est hors programme mais cela peut intéresser certain d’entre vous. Il est possible, et c’est ce qui fait la force de la ligne de commande, de regrouper des commandes dans un fichier qui peut ensuite être exécuté. C’est ce qu’on appelle un script shell.
Pour créer un script il suffit d’écrire des commandes dans un fichier.
On utilisera l’extension .sh
et on fera commencer le fichier par :
#!/bin/bash
Pour rendre le fichier exécutable il faudra effectuer la commande :
chmod +x mon_fichier.sh
et pour lancer le fichier
./mon_fichier.sh