Image de couverture - 19 Commandes Shell (Linux) Indispensables

19 Commandes Shell (Linux) Indispensables

Découvrez 19 commandes shell indispensables pour naviguer, gérer vos fichiers, processus, permissions et requêtes réseau au sein de systèmes Unix/Linux.

Icône de calendrier
Icône de chronomètre 9 min

Difficile de se passer d’un terminal lorsqu’on est développeur ou administrateur système. Découvrez les commandes indispensables à connaître.

Qu’est-ce qu’un shell ?

Rôle des commandes shell

Un shell est un programme, souvent désigné par le terme « interpréteur de commandes », qui sert d’interface entre un utilisateur et le système d’exploitation.

Un shell permet d’envoyer des commandes à un système d’exploitation, que cela soit par l’intermédiaire de lignes de commandes ou via l’exécution de scripts.

Les commandes shell ont à l’origine été conçues dans les années 1970 pour interagir avec des systèmes d’exploitation basés sur Unix, ancêtre des célèbres distributions Linux.

De cette manière, un shell permet par exemple :

  • 🗃️ La gestion de fichiers et dossiers
  • ⚙️ La gestion des processus
  • 🤖 L’automatisation de tâches
  • 💻 L’installation de logiciels
  • 🧮 La réalisation de calculs
  • 🔐 La gestion des permissions
  • Etc.

Bien que shell soit historiquement associé aux systèmes d’exploitation Unix/Linux, il peut aujourd’hui être exploité à travers d’autres OS tel que Windows, grâce à des versions de shell bien spécifiques. 👇

Plusieurs types de shell

Il existe à ce jour plusieurs types de shell, présentant chacun ses propres caractéristiques et fonctionnalités, ainsi que sa propre syntaxe.

Parmi ces versions de shell, on retrouve notamment :

ShellDescription
Bourne Shell (sh)Le langage shell originel, qui a instauré les bases des Shells modernes.
Bash (Bourne Again Shell)L’extension la plus répandue, ajoutant des fonctionnalités supplémentaires au Bourne Shell, comme les scripts interactifs et des raccourcis.
C Shell (csh)Un shell dont la syntaxe s’inspire du langage de programmation C, offrant des structures de contrôle proches de ce dernier.
Korn Shell (ksh)Une combinaison du Bourne et du C Shell, intégrant des fonctionnalités avancées comme les scripts avec arrays et des commandes historiques.
Z Shell (zsh)Une version moderne et puissante qui améliore Bash avec des fonctionnalités comme l’autocomplétion avancée, la personnalisation des prompts, et une meilleure gestion des plugins.
Command Prompt (cmd.exe)Le shell natif de Windows, utilisé pour exécuter des commandes DOS et des scripts batch.
PowerShellUn shell développé par Microsoft, basé sur .NET, qui se distingue par sa gestion d’objets et son intégration avec les systèmes Windows.
Fish (Friendly Interactive SHell)Un shell moderne avec autocomplétion et personnalisation.
Dash (Debian Almquist SHell)Un shell léger utilisé pour les scripts système sous Linux (principalement sous Debian et Ubuntu).

Chaque shell répond à des besoins spécifiques et est utilisé dans différents environnements et contextes, en fonction des préférences ou exigences des utilisateurs.

Bien que leur syntaxe puisse varier d’un type de shell à un autre, ils reposent dans les grandes lignes sur une base identique. A tel point qu’on ne dit pas qu’on maîtrise Bash, Z Shell ou PowerShell mais bien le shell de manière générale.

Les shells Windows : une approche différente

Contrairement aux shells Unix, les shells Windows, comme Command Prompt et PowerShell, utilisent des syntaxes spécifiques.

Dans PowerShell, la commande ls fonctionne grâce à un alias qui pointe vers la cmdlet Get-ChildItem. Cette cmdlet liste le contenu d’un répertoire, offrant une fonctionnalité similaire à ls sur Unix/Linux.

Microsoft a introduit ces alias pour faciliter la transition des utilisateurs habitués aux environnements Unix/Linux, rendant PowerShell plus accessible aux développeurs et administrateurs provenant de ces systèmes.

Cette initiative vise à unifier les pratiques et améliorer l’expérience utilisateur.

Pourquoi maîtriser les bases de shell ?

Aujourd’hui, la majorité des serveurs utilisent Linux en raison de sa stabilité, sa sécurité, sa flexibilité, et de son coût nul, ce qui le rend idéal pour les environnements de production.

Le shell est indispensable aujourd’hui pour nous, techniciens informatiques, tels que les développeurs ou administrateurs système, car il permet d’interagir directement avec un système d’exploitation Linux de manière efficace et précise.

Il est notamment essentiel pour :

  1. Automatiser des tâches : grâce à des scripts qui exécutent des opérations complexes en quelques commandes.
  2. Administrer des systèmes : gérer les fichiers, utilisateurs, réseaux et processus sur des serveurs locaux ou distants.
  3. Diagnostiquer des problèmes : analyser des logs, surveiller les performances et résoudre des incidents.
  4. Utiliser des outils avancés : accéder à des fonctionnalités non disponibles via les interfaces graphiques (GUI).

19 commandes shell incontournables

Il est temps de découvrir 19 commandes shell indispensables sous Linux. Pour certaines de ces commandes, je vous présenterai des options (aussi appelées « flags ») que je trouve utiles.

Toutes les commandes présentent un manuel explicatif complet au travers du flag --help. N’hésitez pas à l’exploiter.

cd

La commande cd permet de changer de répertoire courant.

copié !
cd /home/user/docs

pwd

La commande pwd permet d’afficher le chemin complet du répertoire courant.

copié !
pwd

Gestion des fichiers

ls

La commande ls permet de lister les fichiers et répertoires.

Cette commande présente 3 options utiles :

OptionDescription
-lAfficher des informations détaillées
-aInclure les fichiers cachés
-hFormats lisibles par les humains
copié !
ls
ls -l

Il est également possible de combiner les options en les listant les unes à la suite des autres. Exemple : ls -lah

touch

La commande touch est utilisée pour créer des fichiers vides dans le répertoire courant.

copié !
touch fichier1.txt fichier2.txt

mkdir

La commande mkdir permet de créer un ou plusieurs répertoires.

Cette commande présente une option utile :

OptionDescription
-pCréer des répertoires parents au besoin
copié !
mkdir new_folder
mkdir -p parent/child

rm

La commande rm permet de supprimer un fichier ou répertoire (plus utile que rmdir, qui ne permet de supprimer un répertoire que s’il est vide).

Cette commande présente 2 options utiles :

OptionDescription
-rSupprimer récursivement (= aussi son contenu)
-fForcer la suppression sans confirmation
copié !
rm file.txt
rm -rf directory/

cp

La commande cp permet de copier des fichiers ou des répertoires.

Cette commande présente une option utile :

OptionDescription
-rCopie récursivement un répertoire et son contenu.
copié !
cp fichier.txt directory/
cp fichier.txt directory/ -r

mv

La commande mv permet de déplacer des fichiers ou des répertoires.

copié !
mv source.txt destination

cat

La commande cat permet d’afficher le contenu d’un ou plusieurs fichiers directement dans le terminal.

Cette commande présente une option utile :

OptionDescription
-nNumérote toutes les lignes
copié !
cat fichier.txt -n

Editeur de texte

nano

La commande nano permet d’ouvrir un fichier dans un éditeur de texte simple.

copié !
nano fichier.html

vim

La commande vim permet d’ouvrir un fichier dans un éditeur de texte avancé.

copié !
vim fichier.html

Gestion des processus

ps

La commande ps permet de lister les processus actifs.

copié !
ps

kill

La commande kill permet de terminer un processus par son PID.

copié !
kill 1234

Gestion des permissions

chmod

La commande chmod permet de modifier les permissions d’un fichier ou répertoire.

Cette commande présente une option utile :

OptionDescription
-RAppliquer récursivement les persmissions (= sur le contenu du dossier)
copié !
chmod 644 file.txt
chmod -R 755 directory/
Comprendre les permissions sur un fichier/répertoire

Les permissions peuvent être définies pour trois catégories d’utilisateurs :

  1. Le propriétaire du fichier
  2. Le groupe auquel il appartient
  3. Les autres utilisateurs

Les permissions sont souvent exprimées sous forme de chiffres, où chaque chiffre représente un ensemble de permissions :

  • Lecture (r) : 4
  • Écriture (w) : 2
  • Exécution (x) : 1

Voici un tableau clair pour les chiffres, les permissions et leurs significations :

ChiffrePermissionsSignification
7rwxLecture (4) + Écriture (2) + Exécution (1)
6rw-Lecture (4) + Écriture (2)
5r-xLecture (4) + Exécution (1)
4r--Lecture (4)
3wx-Écriture (2) + Exécution (1)
2w--Écriture (2)
1x--Exécution (1)
0---Aucune permission

Les permissions sont attribuées sous forme de trois chiffres, chacun représentant les permissions pour :

  • Le propriétaire (1er chiffre),
  • Le groupe (2e chiffre),
  • Les autres (3e chiffre).

Par exemple :

chmod 644 file.txt

Applique les permissions suivantes :

  • Propriétaire : lecture et écriture (6 = 4+2)
  • Groupe : lecture uniquement (4)
  • Autres : lecture uniquement (4)
chmod -R 755 directory/

Applique récursivement les permissions.

  • Propriétaire : lecture, écriture, et exécution (7 = 4+2+1)
  • Groupe : lecture et exécution (5 = 4+1)
  • Autres : lecture et exécution (5 = 4+1)

Ces commandes permettent de contrôler précisément qui peut lire, modifier ou exécuter un fichier ou répertoire sur le système.

chown

La commande chown permet de changer le propriétaire d’un fichier ou répertoire.

Cette commande présente une option utile :

OptionDescription
-RAppliquer récursivement les permissions (= sur le contenu du dossier)
copié !
chown user file.txt
chown -R user:group directory/

sudo

La commande sudo permet d’exécuter des commandes avec des privilèges élevés (root).

Cette commande permet par exemple de modifier ou accéder à des fichiers protégés comme ceux situés dans 📂 /etc, 📂 /var, ou 📂 /usr.

copié !
sudo nano /etc/hosts

Réseau

curl

La commande curl permet d’envoyer des requêtes HTTP.

Cette commande présente 2 options utiles :

OptionDescription
-oSauvegarder la réponse dans un fichier
-IAfficher seulement les en-têtes HTTP
copié !
curl https://jsonplaceholder.typicode.com/todos/1
curl https://jsonplaceholder.typicode.com/todos/1 -o file.json 

wget

La commande wget permet de télécharger des fichiers depuis Internet.

copié !
wget https://exemple.com/fichier.zip 

Gestion de paquets

apt

APT est un gestionnaire de paquets pour les systèmes basés sur Debian (comme Ubuntu).

La commande apt permet de gérer les paquets logiciels. Elle permet entres autres d’installer, de mettre à jour et de supprimer des paquets.

Voici quelques commandes apt courantes.

Mettre à jour la liste des paquets disponibles :

copié !
sudo apt update
sudo apt upgrade

Installer un paquet spécifique (par exemple, git) :

copié !
sudo apt install git
copié !
sudo apt remove git
sudo apt purge git # Supprime aussi ses fichiers de configuration

Maîtriser ces commandes shell est un atout indispensable pour tout développeur ou administrateur système. Elles offrent une flexibilité et un contrôle sans égal sur les systèmes d’exploitation, rendant votre travail plus efficace et précis. Alors, à vos terminaux ! 🎯

Lire aussi