Commandes Linux pour les débutants : Le guide essentiel du terminal avec des exemples
Le terminal semble intimidant jusqu’à ce que vous connaissiez quelques dizaines de commandes. Apprenez ceux qui comptent, regroupés en fonction de ce que vous essayez de faire, puis combinez-les pour répondre à une vraie question sur un fichier journal.
- Un petit ensemble de commandes Linux couvre la plupart des tâches quotidiennes :
ls,cd,cp,mv,rm,catetgrep. - Les tuyaux (
|) connectent des outils simples pour répondre à des questions plus difficiles. rmn’a pas de corbeille, alors vérifiez avant d’appuyer sur Entrée.- Utilisez
manou--helpchaque fois que vous oubliez une option.
La plupart des serveurs, conteneurs et machines cloud fonctionnent sous Linux et ne disposent généralement pas de bureau graphique. C’est pourquoi l’apprentissage des commandes Linux est une compétence si utile pour les développeurs et les testeurs. Vous n’avez pas besoin d’en mémoriser des centaines. Quelques dizaines vous mèneront loin.
Nous avons testé les exemples de fichiers, de recherche et de tuyaux dans Git Bash sous Windows, qui fournit les mêmes outils de base, et le résultat provient de cette exécution. Nous n’avons pas exécuté les commandes pour les autorisations, les services, les packages et l’accès à distance, car ils dépendent d’un véritable système Linux. Les détails peuvent varier selon la distribution, alors consultez la documentation de votre propre système.
Commencer en toute sécurité
Vous n’avez pas besoin d’installer Linux pour vous entraîner. Les bonnes options incluent :
- Windows : Sous-système Windows pour Linux (WSL) ou Git Bash pour les bases.
- macOS : le terminal intégré, dont les commandes sont très similaires, bien que certaines options diffèrent.
- Tout système : un conteneur. Notre Tutoriel Docker pour débutants montre comment en démarrer un.
Entraînez-vous dans un dossier jetable et rappelez-vous que tout sous Linux est sensible à la casse : Notes.txt et notes.txt sont des fichiers différents.
Anatomie d’une commande
ls -l /var/log
^ ^ ^
| | argument: what to act on
| option: how to behave
command: what to run
Les options courtes peuvent généralement être combinées, donc ls -l -a et ls -la sont identiques. Les options longues utilisent deux tirets, comme dans --help. Pour obtenir de l’aide, exécutez man ls pour le manuel complet ou ls --help pour un résumé. Appuyez sur q pour quitter une page de manuel.
Se déplacer dans le système de fichiers
| Commande | Ce que ça fait |
|---|---|
mot de passe |
Imprime votre dossier actuel |
ls |
Liste les fichiers |
ls-la |
Répertorie tous les fichiers, y compris ceux masqués, avec des détails |
dossier cd |
Se déplace dans un dossier |
cd.. |
Monte d’un niveau |
CD ~ |
Va dans votre dossier personnel |
cd - |
Revient au dossier précédent |
Appuyez sur Tab pour compléter automatiquement les noms de fichiers et sur la flèche vers le haut pour restaurer les commandes précédentes. Ces deux habitudes permettent de gagner plus de temps que n’importe quelle autre astuce ici. Un nom de fichier commençant par un point, tel que .env, est masqué et ls ne l’affiche qu’avec -a.
Gérer les fichiers et dossiers
| Commande | Ce que ça fait |
|---|---|
mkdir -p projet/journaux |
Crée des dossiers, y compris les parents |
toucher notes.txt |
Crée un fichier vide |
cp a.txt b.txt |
Copie un fichier |
cp -r src/ sauvegarde/ |
Copie un dossier |
mv a.txt b.txt |
Renomme ou déplace un fichier |
rm a.txt |
Supprime un fichier |
rm -r dossier/ |
Supprime un dossier et tout ce qu’il contient |
Voici une courte session de notre course :
$ mkdir -p project/logs
$ cd project
$ touch notes.txt
$ ls
logs notes.txt
$ cp notes.txt backup.txt
$ mv backup.txt old.txt
$ ls
logs notes.txt old.txt
$ rm old.txt
$ ls
logs notes.txt
Astuce : rm n’utilise pas de corbeille et les fichiers supprimés ont généralement disparu. Soyez particulièrement prudent avec rm -r et les caractères génériques. Exécutez d’abord ls avec le même modèle, pour voir exactement ce qui correspondrait, et utilisez rm -i si vous souhaitez une invite pour chaque fichier.
Afficher le contenu du fichier
| Commande | Ce que ça fait |
|---|---|
fichier chat |
Imprime un fichier entier |
moins de fichier |
Fait défiler un long fichier (q pour quitter) |
head -n 5 fichier |
Affiche les cinq premières lignes |
fichier tail -n 5 |
Affiche les cinq dernières lignes |
fichier tail -f |
Suit les nouvelles lignes au fur et à mesure qu’elles sont écrites |
fichier wc -l |
Compte les lignes |
Pour les exemples suivants, nous avons créé un petit fichier journal :
$ cat logs/app.log
ERROR db down
INFO started
ERROR disk full
INFO stopped
$ head -n 1 logs/app.log
ERROR db down
$ tail -n 1 logs/app.log
INFO stopped
$ wc -l logs/app.log
4 logs/app.log
tail -f est un outil quotidien permettant de consulter un journal d’application en direct pendant que vous reproduisez un bug. Appuyez sur Ctrl+C pour l’arrêter.
Recherchez avec grep et trouvez
grep recherche à l’intérieur des fichiers et find recherche les fichiers eux-mêmes :
$ grep ERROR logs/app.log
ERROR db down
ERROR disk full
$ grep -c ERROR logs/app.log
2
$ find . -name "*.log"
./logs/app.log
| Options | Signification |
|---|---|
grep -je |
Ignore le cas |
grep -r |
Recherche un dossier de manière récursive |
grep -n |
Affiche les numéros de ligne |
grep -v |
Affiche les lignes qui ne correspondent pas |
grep -c |
Compte les lignes correspondantes |
Tuyaux et redirection
C’est l’idée qui rend la ligne de commande si puissante. Chaque outil effectue un petit travail et vous les connectez :
| Symbole | Ce que ça fait |
|---|---|
| |
Envoie le résultat d’une commande à la suivante |
> |
Écrit la sortie dans un fichier, en remplaçant son contenu |
>> |
Ajoute la sortie à un fichier |
2> |
Écrit des messages d’erreur dans un fichier |
$ echo "hello" > greeting.txt
$ echo "world" >> greeting.txt
$ cat greeting.txt
hello
world
Soyez prudent avec un seul >, car il écrase silencieusement ce qui était déjà dans le fichier.
Un exemple concret : résumer un journal
Combien de lignes de chaque type y a-t-il dans notre journal ? La combinaison de quatre commandes simples donne la réponse :
$ cut -d' ' -f1 logs/app.log | sort | uniq -c
2 ERROR
2 INFO
Lecture de gauche à droite : cut prend le premier mot séparé par des espaces sur chaque ligne, sort regroupe les mots identiques et uniq -c compte chaque groupe. L’étape de tri est importante, car uniq ne réduit que les doublons voisins. Ajoutez | sort -nr à la fin pour lister en premier les plus courants.
Ce type de one-liner est d’une grande aide lorsque vous enquêtez sur des échecs. Il peut vous indiquer rapidement si une erreur s’est produite deux ou deux mille fois, ce qui est un détail utile à inclure dans un rapport de bug.
Autorisations de fichiers
Exécutez ls -l et vous verrez quelque chose comme ceci :
-rwxr-xr-- 1 asha devs 512 Nov 1 10:00 deploy.sh
Après le premier caractère, qui indique le type de fichier, il y a trois groupes de trois caractères, pour le propriétaire, le groupe et tous les autres. Chacun peut avoir r (lecture), w (écriture) et x (exécution).
| Commande | Ce que ça fait |
|---|---|
chmod +x déployer.sh |
Rend un script exécutable |
fichier chmod 644 |
Le propriétaire peut lire et écrire, les autres peuvent lire |
chmod 755 script.sh |
Le propriétaire a un accès complet, les autres peuvent lire et exécuter |
fichier chown asha |
Change le propriétaire |
commande sudo |
Exécute une commande en tant qu’administrateur |
Les nombres s’additionnent : lire vaut 4, écrire vaut 2 et exécuter vaut 1. Donc 7 signifie les trois et 5 signifie lire et exécuter. Évitez chmod 777, qui donne à tout le monde un accès complet, comme solution rapide aux erreurs d’autorisation. Trouvez plutôt la vraie cause. Et utilisez sudo avec précaution, car il supprime les contrôles de sécurité qui protègent normalement le système.
Informations sur les processus et le système
| Commande | Ce que ça fait |
|---|---|
psaux |
Répertorie les processus en cours d’exécution |
top ou htop |
Affiche une vue en direct du processeur et de la mémoire |
tuer 1234 |
Demande au processus 1234 de s’arrêter |
df-h |
Affiche l’espace disque libre |
dossier du -sh |
Affiche la taille d’un dossier |
gratuit -h |
Affiche l’utilisation de la mémoire |
statut systemctl nginx |
Affiche l’état d’un service |
journalctl -u nginx |
Affiche les journaux d’un service |
Pour installer un logiciel, utilisez le gestionnaire de paquets de votre distribution, tel que sudo apt install curl sur Debian et Ubuntu, ou sudo dnf install curl sur Fedora et RHEL.
Archives et travail à distance
$ tar -czf logs.tar.gz logs
$ tar -tzf logs.tar.gz
logs/
logs/app.log
Dans tar, c signifie créer, z signifie gzip, f nomme le fichier et t répertorie le contenu. Pour extraire une archive, utilisez tar -xzf logs.tar.gz. Pour travailler avec d’autres machines, voici ce dont vous avez besoin :
| Commande | Ce que ça fait |
|---|---|
ssh utilisateur@serveur |
Ouvre un terminal distant |
fichier scp utilisateur@serveur :/chemin/ |
Copie un fichier via SSH |
curl -I https://exemple.com |
Affiche les en-têtes de réponse d’une URL |
Ces mêmes commandes sont utilisées dans les Dockerfiles et les pipelines CI/CD, donc cette connaissance s’avère payante dans le travail DevOps.
Erreurs courantes
- Utiliser
rm -rfsans regarder. Vérifiez d’abord votre dossier avecpwdet faites attention aux espaces dans les chemins. - Écraser avec
>. Utilisez>>lorsque vous vouliez ajouter. - Tout exécuter avec
sudo. Utilisez-le uniquement lorsque cela est nécessaire. - Coller des commandes que vous ne comprenez pas. Lisez-les d’abord, en particulier tout ce qui envoie un téléchargement dans un shell.
- Oublier les guillemets. Un nom de fichier avec des espaces, comme
"my file.txt", en a besoin.
Pour conclure
Vous n’apprenez pas le terminal en lisant à ce sujet. Ouvrez un shell, créez un dossier d’entraînement et exécutez les commandes de chaque section. Essayez ensuite de répondre à une vraie question à l’aide d’un tube, comme quelle erreur apparaît le plus souvent dans un journal. Commencez par la navigation et les fichiers cette semaine, ajoutez ensuite grep et les tuyaux, et le reste suivra selon vos besoins.
Questions fréquentes
Quelles sont les commandes Linux les plus basiques ?
Commencez par pwd, ls, cd, mkdir, cp, mv, rm, cat et grep. Celles-ci couvrent les déplacements, la gestion des fichiers et la recherche, qui constituent l’essentiel du travail quotidien sur le terminal.
Comment puis-je pratiquer les commandes Linux sous Windows ?
Utilisez le sous-système Windows pour Linux pour un environnement complet ou Git Bash pour les bases. Exécuter un conteneur Linux avec Docker fonctionne également bien.
Quelle est la différence entre > et >> sous Linux ?
Un seul > remplace le contenu du fichier par la sortie. Un double >> ajoute la sortie à la fin du fichier et conserve ce qui est déjà là.
Puis-je annuler la commande rm ?
Généralement non, car rm n’utilise pas de corbeille. Les outils de récupération sont parfois utiles mais ne sont pas fiables, alors conservez des sauvegardes et vérifiez d’abord attentivement.
Que signifie sudo ?
sudo exécute une seule commande avec des droits d’administrateur. Il est nécessaire pour des tâches telles que l’installation de logiciels et doit être utilisé avec précaution.
Continuez à apprendre
Besoin d’aide pour les tests, WordPress ou le référencement ?
Nous aidons les équipes à proposer de meilleurs logiciels et à développer leurs sites. Dites-nous sur quoi vous travaillez et nous vous proposerons une prochaine étape claire.
Plus de guides sur tests, IA et développement moderne
Vous avez apprécié cet article ? Choisissez un sujet et accédez directement à nos nouveaux didacticiels.
Les hallucinations de l'IA expliquées : pourquoi les modèles de langage inventent les choses et comment les réduire
Les hallucinations de l'IA ont expliqué : ce qu'elles sont, pourquoi les modèles de langage les produisent, les types courants, comment les réduire …
Lire l'article →DevOpsVariables d'environnement expliquées : fichiers .env, secrets et configuration correctement effectués
Variables d'environnement expliquées avec des exemples Python que nous avons exécutés : lecture et définition, pourquoi chaque valeur est une chaîne…
Lire l'article →Développement logicielLimitation du débit de l'API expliquée : algorithmes, en-têtes et gestion des erreurs 429
Limitation du débit de l'API expliquée avec une simulation que nous avons exécutée : compartiment de jetons, fenêtre fixe, fenêtre glissante, 429 ré…
Lire l'article →Automatisation des testsSe moquer en Python : unittest.mock, patch et les erreurs qui font mentir les tests
Moquerie en Python avec unittest.mock, testée : Mock et return_value, side_effect, correctifs où un nom est utilisé, spec et autospec, dates moqueus…
Lire l'article →Tests logicielsCouverture du code expliquée : couverture des lignes par rapport aux branches et ce que signifie réellement 100 %
Couverture du code expliquée avec une véritable exécution de cover.py : couverture des lignes, des branches et des conditions, lecture d'un rapport,…
Lire l'article →Bases de données et SQLDELETE vs TRUNCATE vs DROP dans SQL : différences, restauration et quand les utiliser
DELETE vs TRUNCATE vs DROP expliqué avec SQL testé : ce que chacun supprime, restauration, déclencheurs, réinitialisation d'identité, vitesse et en …
Lire l'article →Bases de données et SQLVues SQL expliquées : créez, utilisez et évitez les pièges, avec des exemples
Vues SQL expliquées avec les requêtes que nous avons exécutées : création d'une vue, résultats en direct, masquage des colonnes, performances, vues …
Lire l'article →Développement logicielInterface TypeScript vs Type : différences réelles, testées avec le compilateur
Interface TypeScript vs type, vérifiée avec le vrai compilateur : ce que les deux peuvent faire, ce qu'un seul peut faire, la fusion des déclaration…
Lire l'article →Développement logicielPython *args et **kwargs expliqués : fonctions flexibles avec des exemples clairs
Python *args et **kwargs expliqués avec le code que nous avons exécuté : emballage et déballage, ordre des paramètres, arguments de mot-clé uniqueme…
Lire l'article →Développement logicielFonctions Python Lambda : syntaxe, utilisations réelles et quand ne pas les utiliser
Fonctions Python lambda expliquées avec le code que nous avons exécuté : syntaxe, tri avec clé, carte et filtre, fermetures, piège de liaison tardiv…
Lire l'article →Intelligence artificielleQue sont les agents IA ? Comment ils fonctionnent, avec une simple boucle d'agent que vous pouvez exécuter
Que sont les agents IA ? Un guide simple sur la boucle d'agent, les outils, la mémoire et les garde-fous, avec une petite boucle Python que nous avo…
Lire l'article →DevOpsSurveillance vs observabilité : la vraie différence, avec les journaux, les métriques et les traces
Surveillance et observabilité expliquées : échecs connus et inconnus, journaux, métriques et traces, présentation pas à pas des incidents de paiemen…
Lire l'article →DevOpsVolumes Docker vs montages Bind : conserver les données du conteneur de la bonne manière
Volumes Docker et montages de liaison expliqués : pourquoi les données du conteneur disparaissent, volumes nommés, montages de liaison, tmpfs, exemp…
Lire l'article →Automatisation des testsTDD vs BDD : principales différences, une fonctionnalité conçue dans les deux sens et quand les utiliser
TDD vs BDD expliqué avec une fonctionnalité de remise construite dans les deux sens : refactor rouge-vert avec le code que nous avons exécuté, scéna…
Lire l'article →Tests logicielsTests d'acceptation utilisateur (UAT) : processus, liste de contrôle et exemples réels
Les tests d'acceptation des utilisateurs sont expliqués : qui les exécute, en quoi ils diffèrent du contrôle qualité, un processus en sept étapes, u…
Lire l'article →Bases de données et SQLExplication des valeurs SQL NULL : IS NULL, COALESCE, NULLIF et les pièges à éviter
Les valeurs SQL NULL expliquées avec les requêtes que nous avons exécutées : logique à trois valeurs, IS NULL, COALESCE, NULLIF, comment les agrégat…
Lire l'article →Bases de données et SQLInstruction SQL CASE WHEN : syntaxe, exemples réels et erreurs courantes
SQL CASE WHEN expliqué avec les requêtes que nous avons exécutées : formulaires simples et recherchés, ordre des conditions, pivots avec SUM, astuce…
Lire l'article →Développement logicielQu'est-ce que JWT ? Les jetons Web JSON expliqués avec un exemple fonctionnel
Qu’est-ce que JWT ? JSON Web Tokens expliqué : les trois parties, un jeton construit et falsifié dans le code que nous avons exécuté, JWT vs session…
Lire l'article →Développement logicielBoucle d'événements JavaScript expliquée : pile d'appels, microtâches et minuteries avec des exemples
La boucle d'événements JavaScript expliquée avec le code que nous avons exécuté : pile d'appels, files d'attente de tâches et de microtâches, pourqu…
Lire l'article →Développement logicielGénérateurs Python et rendement expliqués : économisez de la mémoire avec des exemples réels
Les générateurs Python et le rendement expliqués avec le code que nous avons exécuté : comment ils s'arrêtent et reprennent, les économies de mémoir…
Lire l'article →Intelligence artificielleQue sont les intégrations ? Vecteurs et similarité cosinus expliqués simplement
Que sont les intégrations ? Un guide en langage simple sur les vecteurs, la similarité cosinus et la recherche sémantique, avec un petit exemple que…
Lire l'article →DevOpsDéploiement Bleu-Vert vs Canary : différences, compromis et comment choisir
Explication du déploiement bleu-vert ou canari : comment chacun fonctionne, coût, risque et restauration, regroupement d'utilisateurs stable que nou…
Lire l'article →Automatisation des testsTests instables : quelles sont leurs causes et comment les corriger définitivement
Des tests irréguliers expliqués avec des démos que nous avons exécutées : les principales causes, comment en confirmer et en diagnostiquer une, les …
Lire l'article →Tests logicielsTests de charge vs tests de contrainte : différences, métriques et exemples k6
Explication des tests de charge et des tests de stress : ce que chacun prouve, les tests de pointe et de trempage, les métriques qui comptent, pourq…
Lire l'article →Tests logicielsScénario de test et scénario de test : principales différences, exemples et quand les utiliser
Scénario de test et scénario de test expliqués : des définitions claires, un tableau côte à côte, une fonctionnalité de réinitialisation de mot de p…
Lire l'article →Bases de données et SQLOptimisation des requêtes SQL : lire les plans d'exécution et corriger les requêtes lentes, avec des délais
Optimisation des requêtes SQL testée sur un million de lignes : lire les plans d'exécution, ajouter les bons index, corriger les filtres non Sargabl…
Lire l'article →Bases de données et SQLSQL UNION vs UNION ALL : différences, exemples et performances testées
SQL UNION vs UNION ALL expliqué avec les requêtes que nous avons exécutées : des doublons, les règles suivent toutes les deux, un véritable bug de d…
Lire l'article →Développement logicielTutoriel API JavaScript Fetch : GET, POST, gestion des erreurs et délais d'attente
Un didacticiel de l'API JavaScript Fetch testé sur un serveur local : GET et POST, pourquoi 404 ne lance pas, un assistant réutilisable, des chaînes…
Lire l'article →Développement logicielGestion des fichiers Python : lecture, écriture, CSV, JSON et pathlib avec exemples
Gestion des fichiers Python expliquée avec le code que nous avons exécuté : modes ouverts, avec lecture de fichiers volumineux, CSV, JSON, pathlib, …
Lire l'article →Développement logicielClasses et objets Python : didacticiel POO avec des exemples réels
Classes et objets Python expliqués avec le code que nous avons exécuté : __init__, méthodes, attributs de classe par rapport à l'instance, héritage,…
Lire l'article →Intelligence artificielleQu'est-ce qu'un grand modèle de langage ? Comment fonctionnent les LLM, expliqués sans battage médiatique
Qu’est-ce qu’un grand modèle de langage ? Les LLM expliqués en langage simple : jetons, intégrations, attention, formation, fenêtres de température …
Lire l'article →DevOpsCommandes Linux pour les débutants : le guide du terminal essentiel avec des exemples
Commandes Linux pour débutants, regroupées par tâche : navigation, fichiers, affichage des journaux, grep, tuyaux, autorisations, processus et archi…
Lire l'article →Automatisation des testsSelenium vs Playwright : principales différences, code comparé et lequel choisir
Comparatif Selenium vs Playwright : architecture, attente, support du navigateur et du langage, débogage, même test dans les deux outils, conseils d…
Lire l'article →Tests logicielsPartitionnement d'équivalence : technique de conception de tests expliquée avec des exemples concrets
Le partitionnement d'équivalence expliqué : comment trouver des partitions valides et invalides, des exemples concrets d'âges, de mots de passe et d…
Lire l'article →Tests logicielsGravité vs priorité dans les tests logiciels : différences, matrice et exemples réels
Explication de la gravité et de la priorité dans les tests logiciels : des définitions claires, une matrice à quatre voies avec des exemples, des éc…
Lire l'article →Bases de données et SQLTutoriel sur les sous-requêtes SQL : types, sous-requêtes corrélées et EXISTE avec des exemples
Un didacticiel sur les sous-requêtes SQL avec les requêtes que nous avons exécutées : les sous-requêtes scalaires, IN, FROM et SELECT, les sous-requ…
Lire l'article →Bases de données et SQLTransactions SQL et ACID expliquées : COMMIT, ROLLBACK et niveaux d'isolement
Transactions SQL et ACID expliquées avec un virement bancaire que nous avons effectué : COMMIT, ROLLBACK, points de sauvegarde, verrous, niveaux d'i…
Lire l'article →Développement logicielGit merge vs rebase : différences, exemples et quand utiliser chacun
Git merge vs rebase expliqué avec de vraies sorties de log, un tableau comparatif, la règle d'or du rebase et un flux de travail sûr pour les équipes.
Lire l'article →Développement logicielList comprehension Python : syntaxe, exemples et cas à éviter
La list comprehension Python expliquée : syntaxe, filtres, if-else, boucles imbriquées, temps mesurés et cas où une boucle for classique est préféra…
Lire l'article →Bases de données et SQLJointures SQL expliquées avec exemples (Inner, Left, Right, Full)
Comprenez les jointures SQL pas à pas avec des tables et requêtes d'exemple : INNER, LEFT, RIGHT, FULL, CROSS et SELF, plus erreurs courantes et con…
Lire l'article →