
Débutant Vibe Codeur : C'est quoi le terminal ? (Théorie ET Pratique)
Audio Summary
AI Summary
Le terminal est l'ordinateur sans la souris, permettant d'interagir directement via des commandes, ce qui est plus rapide, précis et automatisable que l'interface graphique. Les agents d'IA comme Claude ou Codex l'utilisent intensivement. Il existe différents types de terminaux, mais les commandes abordées sont celles du monde Unix, natives sur macOS et Linux. Pour Windows, l'installation de Git inclut Git Bash, qui est compatible. Sur macOS, l'application Terminal est prête à l'emploi. Pour Windows, bien que PowerShell soit natif, Git Bash est privilégié pour cette formation, souvent intégré à VS Code.
Comprendre l'arborescence des fichiers est fondamental. Chaque fichier a une adresse, et les dossiers peuvent contenir d'autres dossiers et fichiers. Cette structure est similaire pour les applications et sites web. Par exemple, un dossier `src` contient souvent le code source, un dossier `public` des images, et un fichier `package.json` agit comme carte d'identité du projet, listant ses dépendances et commandes, ce que Claude lit souvent en premier. Les fichiers `.env` contiennent des secrets (mots de passe, clés API) et le point devant indique qu'ils sont cachés.
Les deux premières questions que l'on se pose dans un terminal sont "où suis-je ?" et "qu'y a-t-il ici ?".
La commande `pwd` (print working directory) affiche la position exacte sur l'ordinateur (ex: `users/gens/mon_projet`).
La commande `ls` (list) liste le contenu du dossier courant (fichiers et dossiers).
L'option `-la` avec `ls` (`ls -la`) affiche les fichiers cachés et des détails supplémentaires comme les droits, la taille et la date. Il est aussi possible de lister le contenu d'un autre dossier depuis sa position actuelle, par exemple `ls src` pour voir le contenu du dossier `src`.
Pour se déplacer dans l'ordinateur, la commande `cd` (change directory) est utilisée. `cd nom_du_dossier` permet d'entrer dans un dossier. `cd ..` permet de remonter d'un niveau dans l'arborescence. Si un dossier n'existe pas, la commande `cd` échouera.
Pour manipuler les fichiers et dossiers :
`touch nom_du_fichier` crée un fichier vide. S'il existe déjà, il ne l'écrase pas mais met à jour sa date.
`mkdir nom_du_dossier` (make directory) crée un nouveau dossier. L'option `-p` avec `mkdir` (`mkdir -p src/pages/admin`) permet de créer une chaîne de dossiers d'un coup, y compris les parents manquants.
`rm nom_du_fichier` (remove) supprime un fichier. Cette suppression est définitive et irréversible.
`rm -r nom_du_dossier` (récursif) supprime un dossier et tout son contenu. Il faut être extrêmement prudent avec cette commande car elle est irréversible.
La commande `cat` permet d'afficher le contenu d'un fichier. `cat package.json` affichera le contenu du fichier `package.json`. On peut aussi afficher le contenu d'un fichier situé dans un sous-dossier, comme `cat src/utils.js`.
`head` et `tail` affichent respectivement les premières ou dernières lignes d'un fichier, utile pour les fichiers volumineux.
`wc -l` (word count - lines) compte le nombre de lignes d'un fichier, pratique pour estimer sa taille.
Attention aux fichiers `.env` qui contiennent des données sensibles comme des mots de passe ou clés API. Afficher leur contenu via `cat .env` expose ces informations. La sécurité est primordiale, car les développeurs sont souvent les premières cibles des attaques.
La commande `find` permet de chercher un fichier par son nom. `find . -name "*.js"` cherche tous les fichiers avec l'extension `.js` à partir du dossier courant (`.`) et dans tous ses sous-dossiers. L'étoile (`*`) est un joker qui signifie "n'importe quoi".
La commande `grep` permet de chercher un texte à l'intérieur des fichiers. C'est une commande très utilisée par les IA.
`grep -rn "texte_recherché"` :
`-r` (récursif) descend dans tous les sous-dossiers.
`-n` (number) affiche le numéro de la ligne où le texte est trouvé.
`-i` (incentive) ignore la casse (majuscules/minuscules) lors de la recherche.
Exemple : `grep -rni "client" src` cherchera le mot "client" (indépendamment de la casse) dans tous les fichiers du répertoire `src` et de ses sous-répertoires, en affichant les numéros de ligne.
La puissance du terminal réside dans la possibilité d'enchaîner les commandes. Le "pipe" (`|`) permet d'envoyer la sortie d'une commande comme entrée à une autre. Par exemple, `ls src | grep test` listera le contenu du dossier `src` puis filtrera cette liste pour ne garder que les lignes contenant le mot "test".
Les IA comme Claude traduisent nos requêtes en commandes terminal. Si on lui demande de lire un fichier, il exécutera un `cat`. Pour trouver des fichiers de test, il utilisera `find . -name "*test.js"`. Pour savoir ce qu'il y a dans un projet, il fera un `ls -la`.
En pratique, on peut créer un dossier "terminal", l'ouvrir dans VS Code, puis ouvrir un terminal Git Bash.
`pwd` affiche le chemin actuel. `ls` montre que le dossier est vide.
`touch exemple1.txt`, `touch exemple2.txt`, `touch exemple3.txt` créent trois fichiers. `ls` les affiche.
`mkdir exemple` crée un dossier.
`cd exemple` pour entrer dans le dossier, puis `pwd` pour vérifier. `cd ..` pour remonter.
`rm exemple3.txt` supprime un fichier.
Si un fichier `exemple1.txt` contient "Bonjour", `cat exemple1.txt` affichera "Bonjour".
`find . -name "*exemple*"` trouvera tous les fichiers ou dossiers contenant "exemple" dans leur nom.
`grep -rn "bonjour"` cherchera "bonjour" (sensible à la casse). `grep -rni "bonjour"` ignorera la casse.
L'enchaînement de commandes comme `cat exemple1.txt | wc -w` affichera le nombre de mots dans le fichier (ici, 1). `cat exemple1.txt | wc -m` affichera le nombre de caractères (ici, 7 pour "Bonjour").
`ls -la | wc -m` comptera le nombre de caractères de la sortie de `ls -la`.
La compréhension des bases du terminal est essentielle pour la sécurité et l'interaction avec les outils d'IA, car elle permet de reconnaître et de comprendre les commandes exécutées. Les possibilités d'enchaîner les commandes sont illimitées.