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.
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 :
Shell | Description |
---|---|
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. |
PowerShell | Un 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 :
- Automatiser des tâches : grâce à des scripts qui exécutent des opérations complexes en quelques commandes.
- Administrer des systèmes : gérer les fichiers, utilisateurs, réseaux et processus sur des serveurs locaux ou distants.
- Diagnostiquer des problèmes : analyser des logs, surveiller les performances et résoudre des incidents.
- 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.
Navigation
cd
La commande cd
permet de changer de répertoire courant.
cd /home/user/docs
pwd
La commande pwd
permet d’afficher le chemin complet du répertoire courant.
pwd
Gestion des fichiers
ls
La commande ls
permet de lister les fichiers et répertoires.
Cette commande présente 3 options utiles :
Option | Description |
---|---|
-l | Afficher des informations détaillées |
-a | Inclure les fichiers cachés |
-h | Formats lisibles par les humains |
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.
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 :
Option | Description |
---|---|
-p | Créer des répertoires parents au besoin |
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 :
Option | Description |
---|---|
-r | Supprimer récursivement (= aussi son contenu) |
-f | Forcer la suppression sans confirmation |
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 :
Option | Description |
---|---|
-r | Copie récursivement un répertoire et son contenu. |
cp fichier.txt directory/
cp fichier.txt directory/ -r
mv
La commande mv
permet de déplacer des fichiers ou des répertoires.
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 :
Option | Description |
---|---|
-n | Numérote toutes les lignes |
cat fichier.txt -n
Editeur de texte
nano
La commande nano
permet d’ouvrir un fichier dans un éditeur de texte simple.
nano fichier.html
vim
La commande vim
permet d’ouvrir un fichier dans un éditeur de texte avancé.
vim fichier.html
Gestion des processus
ps
La commande ps
permet de lister les processus actifs.
ps
kill
La commande kill
permet de terminer un processus par son PID.
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 :
Option | Description |
---|---|
-R | Appliquer récursivement les persmissions (= sur le contenu du dossier) |
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 :
- Le propriétaire du fichier
- Le groupe auquel il appartient
- 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 :
Chiffre | Permissions | Signification |
---|---|---|
7 | rwx | Lecture (4) + Écriture (2) + Exécution (1) |
6 | rw- | Lecture (4) + Écriture (2) |
5 | r-x | Lecture (4) + Exécution (1) |
4 | r-- | Lecture (4) |
3 | wx- | Écriture (2) + Exécution (1) |
2 | w-- | Écriture (2) |
1 | x-- | 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 :
Option | Description |
---|---|
-R | Appliquer récursivement les permissions (= sur le contenu du dossier) |
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
.
sudo nano /etc/hosts
Réseau
curl
La commande curl
permet d’envoyer des requêtes HTTP.
Cette commande présente 2 options utiles :
Option | Description |
---|---|
-o | Sauvegarder la réponse dans un fichier |
-I | Afficher seulement les en-têtes HTTP |
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.
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 :
sudo apt update
sudo apt upgrade
Installer un paquet spécifique (par exemple, git
) :
sudo apt install git
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 ! 🎯