Faire ses débuts sur la ligne de commande Linux
Les invites de commande vous font peur ? Venez découvrir les bases, pour débuter doucement mais sûrement !
Article publié le 22/03/2022, dernière mise à jour le 19/09/2023
Ceci est un article invité, écrit par Imrane Dessai de la newsletter "L'admin Sys pour les Développeurs"
L'une des choses que l'on n'apprend pas forcément au début de son parcours en programmation, c'est l'utilisation des terminaux/consoles de commandes. Parfois on se dit que lorsque l'on est dev, on fait du code... et que la ligne de commande, c'est pour les Ops...
Sauf que dans la vraie vie, il arrive toujours un moment où l'on doit se connecter sur une machine Linux (sans interface graphique). Et là, on se retrouve un peu jeté dans le grand bain, sans bouée.
Alors apprenons ensemble les concepts de bases de l'utilisation d'un terminal, pour ne se noyer dans le système !
Les bases
La suite de l'article part du principe que vous savez arriver sur un terminal de commande (en SSH sur un serveur ou en lançant un terminal local).
Souvent ça rassemble à ça :
username@hostname:location$
- username : c'est le nom de l'utilisateur connecté sur la machine
- hostname : le nom de la machine sur laquelle vous êtes (très pratique pour ne pas faire de bêtise sur le mauvais serveur)
- location : le dossier courant
- $ : indique que vous n'avez pas les droits administrateur (sinon c'est un # quand on est root/admin)
Dans la ligne de commande, nous allons appeler/invoquer des commandes pour effectuer des actions :
- Administrer son serveur
- Configurer des services
- Investiguer des défaillances
- Déployer du code source en production
Grossièrement, tout ce qu'on peut faire sur sa propre machine avec une souris... mais là, tout va se faire au clavier.
Les commandes c'est comme des fonctions dans un code. Une fonction prend des paramètres (ou pas), effectue des actions (des prints, des calculs ...) et retourne un résultat.
Pour utiliser une fonction, il faut qu'elle soit définie et qu'elle existe. Les commandes, c'est quasiment la même chose. La ligne de commande est donc un interpréteur qui va exécuter les commandes en fonction des paramètres et des variables que l'on va utiliser.
Une commande a souvent cette forme :
command [-argument] [--long-argument]
Quelques exemples
Il est conseillé d'essayer les commandes au fur et à mesure pour arriver à suivre et voir les résultats en direct ! Il n'y a rien de dangereux.
Commencer par la simple récupération d'informations :
pwd # Indique où l'on se trouve dans le
# système de fichier (par défaut le dossier de base appelé home)
ls # Liste les fichiers du dossier actuel
ls -l # Même liste mais avec plus de détails
date # Récupérer la date systeme et l'heure
ps # Lister les processus qui tournent actuellement
Maintenant, on peut commencer à explorer :
cd /tmp # Déplace vers le dossier /tmp
cd # Ramène dans le dossier de base (quand utilisé sans argument)
cat .bashrc # Affiche le contenu du fichier .bashrc
history # Affiche l'historique des dernières commandes executées
echo hello # Affiche "hello" dans l'invite de commande
À noter que lorsqu'un fichier/dossier est précédé d'un . comme ".bashrc", cela indique que c'est un élément caché par défaut.
Et aller encore un peu plus loin :
touch example.txt # Crée un fichier example.txt
mkdir dossier # Crée un répertoire nommé "dossier"
echo “echo hello” > tryme # Injecte la chaîne "echo hello" dans un nouveau
# fichier qui va porter le nom "tryme"
chmod 700 tryme # Modifie les droits d'accès du fichier et
# lui permet d'être exécuté comme une commande
./tryme # Lance le fichier comme une commande
Normalement, en lançant ta dernière commande, vous devriez voir le mot "hello" apparaitre dans la console.
Bravo, tu as généré ton premier script shell exécutable !
Naviguer plus facilement
Maintenant qu'on a abordé les bases, découvrons comment se déplacer plus naturellement en revenant sur les utilisations plus poussées de la commande : "cd"
pwd # Ne pas oublier cette commande à chaque fois pour vérifier le dossier courant
cd / # Ramène à la racine du système de fichier, c'est le premier dossier, le plus haut.
# Il n'y en a pas d'autre au dessus
cd /tmp # Saute directement dans le dossier tmp qui se trouve à la racine
cd /var/log # Saute directement dans le dossier log qui se trouve dans var qui lui même se trouve à la racine
# Note : Vous n'êtes pas obligé de revenir dans un dossier parent pour aller dans les dossiers enfants.
# On parle de déplacement par chemin absolu, comme une téléportation
cd .. # Remonte au dossier parent
# (En suivant les exemples dans l'ordre, vous devez vous trouvez dans /var maintenant)
cd log # Allez dans le dossier log (s'il existe)
cd ../.. # Remonte de deux parents (donc à la racine)
# Ici on se déplace par chemin relatif. On ne donne pas le chemin complet, on donne le chemin par rapport à ton emplacement actuel
cd - # petit astuce pour revenir dans le dernier dossier
# (Normalement /var/log maintenant)
cd ../../tmp # Remonte de deux parents (donc à la racine), puis redescend dans tmp
cd ~ # Le ~ équivaut au dossier de base
cd ~/Desktop # Amène sur votre bureau (dossier Desktop contenu dans le dossier de base)
Maintenant, on sait naviguer dans les dossiers, on peut créer et manipuler des dossiers et des fichiers :
cd # On revient dans notre dossier de base pour faire des tests
mkdir folder1 # Crée un dossier qui porte le nom folder1
ls -l # Pour vérifier qu'il est bien listé
mkdir d1 d2 # Crée d'un coup les deux dossiers d1 et d2
mkdir folder1/d3 # Crée un dossier d3 dans le dossier folder1
mkdir -p f2/d4 # Crée un dossier d4 dans le dossier f2 (s'il n'existe pas, le crée à la volée)
touch un.txt # Crée un fichier vide dans le dossier courant
touch d1/deux.txt # Crée un fichier vide dans le dossier d1
cp un.txt trois.txt # Copie le fichier UN et la copie s'appelle TROI
mv un.txt d1 # Déplace le fichier dans le dossier d1
mv d1/* d2 # Déplace tout (fichiers et dossiers) ce qui se trouve dans d1 vers d2
ls -l d2 # Liste ce qui se trouve dans d2
rm d1/un.txt # Supprime le fichier un.txt qui se trouve dans le dossier d1
rmdir d1 # Supprime le dossier d1 (uniquement s'il est vide, sinon il y aura erreur)
Désormais vous n'avez plus peur de vous noyez dans un terminal de commande, mais en plus vous savez naviguez, et vous pouvez commencer à profiter de la vue !
Pour aller plus loin
Vous l'aurez compris, cet article est une introduction, alors je vous donne toutes les pistes que vous pouvez explorer dès maintenant :
- Les 40 commandes de bases à connaitre : https://imrane.substack.com/p/interro-surprise-linux-cli-
- L'opérateur "pipe" : https://imrane.substack.com/p/pipe-shell
- Les opérateurs : if, for ... et les variables
- Les sorties et les entrées (les chevrons, echo, cat ...)
- Les notions de droits- Créer des scripts qui s'exécutent tel des commandes
- Personnaliser ta ligne de commande avec des alias et/ou des fonctions
Aucun commentaire pour l'instant