Introduction à Linux

  1. Introduction à Linux
    1.1. Le vocabulaire Linux version ultrafast
    1.2. Installer ou utiliser Linux
  2. Le terminal Linux
    2.1. Les commandes indispensables du terminal
    2.2. Définir, afficher et supprimer des variables d'environnement
    2.3. Les raccourcis clavier du terminal
    2.4. Exécuter des commandes avec des droits d'administration (droits root)
    2.5. Transférer la sortie standard
  3. Autres outils Linux utiles à installer
    3.1. Comment installer de nouveaux outils Linux
    3.2. Terminator, plusieurs terminaux en 1
    3.3. Des environnements de développement pour coder
  4. Exercice : le rosier

Le vocabulaire Linux version ultrafast

  • Linux est un noyau (le même utilisé par Android)
  • Fedora, SuSE, Debian, Ubuntu, ArchLinux, ... sont des distributions Linux
  • La touche clavier "Windows" est nommé touche "Super"

Gestion des droits :

  • L'administrateur général Linux est nommé root, il possède tous les droits
  • Les autres utilisateurs avec des droits d'administration sont des sudoers
  • Ils activent leur droit d'administration avec sudo à chaque besoin ponctuel

La Hiérarchie de Fichiers Standard (FHS) :

  • / est la racine du système
    (root directory ≃ C:\)
  • Les disques sont des points de montage sous /media par ex /media/kingston ou /media/cdrom
  • /home/ contient les dossiers personnels des utilisateurs
  • /home/claudia/ est le dossier perso de Claudia (≃ Mes documents)
  • /var/log/ contient les journaux système

Installer ou utiliser Linux

  • Machine virtuelle dans Virtualbox : Fonctionnel mais complexifie la gestion du réseau et limite les performances 3D pour la simulation.
  • Dual boot : Installer Linux à côté de Windows. Nécessite de réduire la partition Windows d'abord.
  • Live USB : clé USB bootable remplace le disque dur. Attention au goulot d'étranglement USB car l'hôte USB et/ou la clé USB peuvent être lents.

Dans notre cas :

  • Cas A : le formateur vous fournit une clé USB Live préinstallée avec ROS
  • Cas B : vous téléchargez l'image préinstallée et la flashez sur une clé USB Live
  • Cas C : vous avez installé vous-même Ubuntu 22.04 et ROS Humble

🧑‍💻 Parfois les installations Linux sont utilisées sans interface graphique (Gnome, KDE, LXDE, ...), e.g. Ubuntu Server

Le terminal Linux

  • claudia est le nom d'utilisateur
  • délimiteur @
  • dell-xps-13 est le nom de PC
  • délimiteur :
  • /home/claudia/Videos est le dossier actuel
  • délimiteur $
  • ls est un exemple de commande tapée par l'utilisateur (list), ou bien vlc

Dans le cours présent, les terminaux commençent par ~$

Les commandes indispensables du terminal

Les commandes à connaître pour débuter avec un terminal Linux

ls : lister les fichiers actuels

~$ ls
Bureau     Images   Musique  PycharmProjects  ros2_ws  Téléchargements
Documents  Modèles  Public   Repositories     snap     Vidéos

Pour afficher une liste détaillée, ajouter -l :

~$ ls -l
~$ ll
total 124
drwxr-xr-x  2 yoan yoan 4096 janv. 27 21:25 Bureau/
drwxr-xr-x  2 yoan yoan 4096 janv. 27 21:25 Documents/
drwxr-xr-x  3 yoan yoan 4096 janv. 30 19:05 Images/
[...]
drwxr-xr-x  2 yoan yoan 4096 janv. 27 21:25 Vidéos/

... cela affiche, dans l'ordre : les droits d'accès, la taille en octets, le propriétaire, le groupe, l'horadatage de modification

En général, ll est un alias de ls -l (un raccourci).

Utilisé sur un dossier, ls liste son contenu :

~$ ls Images
2019  2020  2021  2022  2023  2024  photo.jpg  Screenshot.png

Si toutefois vous voulez des informations sur le dossier lui-même, ajoutez -d (directory)

~$ ls -l -d Images
-rwxr-x--- 26 yoan yoan 4096 févr. 27 11:21 photo.jpg
[...]

cat : afficher le contenu d'un fichier :

  • cat f.txt

rm : supprimer un/des fichier(s) :

  • rm f1.txt f2.txt
  • rm -r directory/

Par défaut, rm ne fonctionne pas sur un dossier. Pour supprimer un dossier, ajouter -r (récursif) pour supprimer le dossier et son contenu.

⚠️ Si vous supprimez / de manière récursive, vous détruirez votre système entier. Ne faites donc pas : ~$ rm -r / (toutefois cela nécessite des droits root).

nano : un éditeur de fichiers en ligne de commande

~$ nano new-file.txt

Tapez ensuite le texte à inclure dans le fichier :

Dans le panneau de contrôle inférieur ^X Quitter indique que'il faut taper Ctrl + X pour quitter. nano vous demandera si vous souhaitez enregistrer ou non.

⚠️ si votre fichier est vide, nano ne vous propose pas de l'enregistrer

mkdir : créer un dossier (make directory)

~$ mkdir a
~$ ls -d a
drwxr-xr-x  2 yoan yoan 4096 janv. 27 21:25 a/
[...]

Ajouter -p construit aussi les dossiers parents s'ils n'existent pas déjà (a, b et c)

mkdir -p a/b/c/d

... cela permet de faire des dossiers et sous-dossiers sur plein de niveaux.

cd : changer de dossier (change directory)

~$ cd a
~/a$

Observez le changement du prompt ~/a$ au lieu de ~$ : cela indique que l'on se trouve désormais dans le dossier a.

Vous pouvez aller tout au bout des sous-dossiers que vous avez créé :

~/a$ cd b/c/d
~/a/b/c/d$

Utilisez cd sans nom de dossier pour revenir directement au dossier personnel :

~/a/b/c/d$ cd
~$ 

Les dossiers remarquables

  • / est la racine (C:\ sous Windows)
  • ~ est le dossier personnel /home/username/ ("Mes documents")
  • . est le dossier courant
  • .. est le dossier parent

Ainsi :

  • cd .. revient au dossier parent
  • cd ../.. revient deux dossiers en arrière
  • nano ~/f.txt créera f.txt dans le dossier personnel
  • nano /f.txt créera f.txt à la racine du système (nécessite des droits root)
  • nano ./f.txt est équivalent à nano f.txt
  • nano ~/../../f.txt est équivalent à nano /f.txt

Vous comprenez maintenant que, dans le prompt ~$:

  • ~ indique que vous vous trouvez dans votre dossier personnel
  • $ indique que vous êtes un utilisateur sans droit root (# sinon)

Rendez-vous à la racine du système : prompt comportera / au lieu de $ :

~$ cd /
/$

Tapez ensuite cd seul pour revenir au prompt ~$ dans votre dossier personnel.

source : exécuter un (autre) script :

  • source script.sh

En particulier, le script ~/.bashrc est celui qui est exécuté à l'ouverture du terminal. Donc pour forcer une réouverture : source ~/.bashrc

ℹ️ Les fichiers et dossiers dont le nom commençent par . sont cachés.

⚠️ Ne pas confondre .f.txt qui est un fichier caché et ./f.txt qui est un fichier normal dans le dossier courant.

chmod, changer le mode du fichier

Permet de changer diverses autorisations d'un fichier : ses droits d'accès, de modification, ou d'exécution.

Ces autorisations sont diverses, le man peut vous aider à les connaître. En particulier :

  • chmod +x f.py ajoute le droit d'eXécution (x) de f.py
  • chmod -x f.py supprime le droit d'eXécution (x) de f.py

Ici, le droit est ajouté/supprimé d'un fichier Python, mais cela fonctionne aussi pour des exécutables divers (exécutables compilés C++, script Bash, ...)

ℹ️ Lorsqu'un fichier est exécutable, ls l'affiche en vert.

Définir, afficher et supprimer des variables d'environnement

export BONJOUR="Bonjour à tous" # Définit une nouvelle variable ou l'écrase
printenv       # Affiche TOUTES les variables d'environnement + leur valeur
echo $BONJOUR  # Affiche UNIQUEMENT le contenu de BONJOUR / Attention au $
unset BONJOUR  # Supprime la variable de l'environnement

⚠️ Une variable d'environnement est spécifique à un terminal

ℹ️ Si ces commandes sont placées dans ~/.bashrc alors elles seront définies à cahque chargement d'un nouveau terminal

Les raccourcis clavier du terminal

Utilisez Ctrl + C pour :

  • revenir à zéro lorsque vous avez tapé quelque chose à effacer
  • arrêter une commande en cours de foncitonnement (envoi du signal SIGINT)

Utilisez les flèches HAUT et BAS pour naviguer dans l'historique des commandes.

Utilisez la touche TAB pour laisser le terminal compléter la suite de la commande par un nom de fichier ou dossier existant. Si plusieurs correspondent, ils seront tous listés.

Faites une recherche dans l'historique de commandes avec Ctrl + R puis tapez quelques lettres pour chercher une précédente commande.
Pressez à nouveau Ctrl + R pour chercher à nouveau.

A faire : Cherchez maintenant toutes les commandes nano que vous avez tapé en tapant Ctrl + R puis na, et faites Ctrl + R à nouveau

Exécuter des commandes avec des droits d'administration (droits root)

L'administrateur système est l'utilisateur root, il possède tous les droits. Il est déconseillé d'utiliser ce nom pour travailler compte tenu des risques.

sudo confère des droits d'administration temporaires à la commande qui suit :

sudo nano new-file.txt

ℹ️ sudo fonctionne uniquement si l'utilisateur est autorisé à élever ses droits (i.e. si c'est un sudoer).

Transférer la sortie standard

Chaque commande possède une sortie standard qui peut être :

  • Le terminal (par défaut) : echo Hello
  • Un fichier grâce au redirecteur > : echo Hello > f.txt
  • Une autre commande grâce au pipe | : echo Hello | grep ell

Par exemple, on ajoute grep qui filtre des lignes, sort qui les trie par ordre croissant, et head qui filtre que les 100 premières lignes :

cat input.txt | grep January | sort | head -n 100 > output.txt

le résultat est redirigé dans un fichier output.txt

Autres outils Linux utiles à installer

Comment installer de nouveaux outils Linux

Installons l'utilitaire tree pour afficher un arbre représentant le contenu d'un dossier.

La plupart du temps, les droits root sont requis pour installer, d'où sudo.

Via le gestionnaire de packages apt :

apt search tree
sudo apt install tree

Via le gestionnaire de packages snap :

snap search tree
sudo snap install tree

Terminator, plusieurs terminaux en 1 !

sudo apt install terminator

Des environnements de développement pour coder

Visual Studio Code (Microsoft) :

sudo snap install code --classic

PyCharm Community (JetBrains) :

sudo snap install pycharm-community --classic

Exercice : le rosier

Pouvez-vous créer cette hierarchie de fichiers et dossiers uniquement avec les commandes du terminal ?