Compétence Terminal & CLI
Référence pour travailler dans un terminal Linux — couvrant l'ensemble des compétences, du bash de base à l'orchestration de conteneurs et à l'exécution d'agents IA.
Comment utiliser cette compétence
Ce fichier couvre les modèles les plus courants. Pour des références détaillées sur les commandes, chargez le fichier pertinent depuis references/ à la demande :
| Sujet | Fichier de référence |
|---|---|
| Bash de base : pipes, scripts, système de fichiers, installation, variables d'environnement | references/bash.md |
| Conteneurs : Podman, Kubernetes (kubectl), Helm | references/containers.md |
| Requêtes HTTP : curl | references/curl.md |
| Agents IA : aider-chat, CLI claude | references/agents.md |
1. Exécuter une commande bash
commande [options] [arguments]
# Exécution séquentielle — s'arrête en cas d'échec
cmd1 && cmd2 && cmd3
# Exécution même en cas d'échec
cmd1; cmd2; cmd3
# Capturer la sortie dans une variable
OUTPUT=$(commande)
# Rediriger stdout / stderr / les deux
commande > out.txt
commande 2> err.txt
commande &> all.txt
# Ignorer toute la sortie
commande > /dev/null 2>&1
2. Vérifier si un outil existe
type -a nom_outil # Tous les emplacements où l'outil est trouvé
apropos mot_clé # Trouver les commandes correspondant à un mot clé
which nom_outil # Premier binaire sur le PATH
whereis nom_outil # Emplacements du binaire, des sources et de la page de manuel
3. Combiner avec &&
# Ne continuer que si la commande précédente a réussi
sudo apt update && sudo apt upgrade -y
# Enchaîner plusieurs étapes en toute sécurité
mkdir -p build && cd build && cmake ..
4. Enchaîner avec |
# Passer la sortie standard d'une commande comme entrée standard de la suivante
cmd1 | cmd2 | cmd3
# Modèles courants
ls -la | grep ".conf"
ps aux | grep nginx
journalctl -u myservice | grep ERROR | tail -20
cat file.txt | wc -l
5. Lire le contenu avec cat
cat fichier.txt # Fichier complet vers la sortie standard
cat fichier1.txt fichier2.txt # Concaténer plusieurs fichiers
head -n 20 fichier.txt # 20 premières lignes
tail -n 20 fichier.txt # 20 dernières lignes
tail -f /var/log/app.log # Suivre la sortie du journal en direct
less fichier.txt # Vue paginée (q pour quitter)
grep "motif" fichier.txt # Lignes correspondant au motif
grep -r "motif" ./répertoire/ # Recherche récursive dans un répertoire
grep -n "motif" fichier.txt # Avec numéros de ligne
grep -i "motif" fichier.txt # Insensible à la casse
6. Trier les résultats
sort fichier.txt # Ordre alphabétique (croissant)
sort -r fichier.txt # Ordre inverse
sort -n fichier.txt # Tri numérique
sort -k2 fichier.txt # Trier par colonne 2
sort -t: -k3 -n /etc/passwd # Délimiteur personnalisé (:), colonne 3, numérique
ls -la | sort -k5 -n # Trier la sortie ls par taille de fichier (colonne 5)
7. Résultats uniques
# uniq ne supprime que les doublons *consécutifs* — toujours trier d'abord
sort fichier.txt | uniq # Dédupliquer
sort fichier.txt | uniq -c # Compter les occurrences
sort fichier.txt | uniq -d # Afficher uniquement les doublons
sort fichier.txt | uniq -u # Afficher uniquement les lignes apparaissant une fois
# Pipeline typique : compter les types d'erreurs dans un journal
cat app.log | grep ERROR | sort | uniq -c | sort -rn
8. Écrire et exécuter des scripts avec heredoc
# Créer un fichier de script en ligne
cat << 'EOF' > mon_script.sh
#!/bin/bash
set -euo pipefail # Quitter en cas d'erreur, variable non définie, ou échec de pipe
echo "Aujourd'hui : $(date +%Y-%m-%d)"
for i in 1 2 3; do
echo "Étape $i"
done
EOF
chmod +x mon_script.sh
./mon_script.sh
# Ou exécuter directement sans créer de fichier
bash << 'EOF'
echo "Exécution en ligne"
ls -la /tmp
EOF
Bonnes pratiques pour les scripts :
- Toujours commencer par
#!/bin/bash - Utiliser
set -euo pipefailpour des valeurs par défaut sûres - Toujours mettre les variables entre guillemets :
"$VAR"pas$VAR - Utiliser
$(...)au lieu des backticks
9. Système de fichiers — référence rapide
# Naviguer et inspecter
pwd && ls -lah # Où suis-je + qu'y a-t-il ici
tree -L 2 # Arborescence (2 niveaux de profondeur)
find /chemin -name "*.log" # Trouver par nom
du -sh /chemin # Taille d'un répertoire
df -h # Utilisation du disque de tous les montages
# Créer / copier / déplacer / supprimer
mkdir -p /chemin/vers/rép # Créer avec les parents
cp -r src/ dst/ # Copier un répertoire
mv src dst # Déplacer ou renommer
rm -rf rép/ # Supprimer récursivement (irréversible)
# Permissions et propriétaire
chmod +x fichier # Rendre exécutable
chmod 644 fichier # rw-r--r--
chown utilisateur:groupe fichier # Changer le propriétaire
# Liens
ln -s /cible /lien # Lien symbolique
readlink -f /lien # Résoudre le lien symbolique en chemin réel
# Montages
mount # Lister tous les montages actifs
lsblk # Arborescence des périphériques bloc
findmnt # Arborescence des points de montage
→ Référence complète du système de fichiers : references/bash.md
10. Installer et mettre à jour — référence rapide
# APT
sudo apt update && sudo apt upgrade -y
sudo apt install -y nom_paquet
# pip (Python)
pip install paquet --break-system-packages
# npm (Node.js)
npm install -g nom_paquet
→ Référence complète d'installation (snap, depuis les sources, options pip) : references/bash.md
11. Obtenir de l'aide sur une commande
commande --help # Aide intégrée (la plus rapide)
man commande # Page de manuel complète
apropos mot_clé # Rechercher dans les résumés des pages de manuel
whatis commande # Description en une ligne
info commande # Pages d'information GNU (pour les outils GNU)
help cd # Aide pour les commandes internes du shell
12. Variables d'environnement — référence rapide
export VAR="valeur" # Définir pour le shell courant et les sous-processus
echo $VAR # Lire une variable
unset VAR # Supprimer une variable
env # Lister toutes les variables d'environnement
VAR=valeur commande # Définir uniquement pour une seule commande
→ Persistance des variables, chargement des fichiers .env : references/bash.md
Références détaillées
Chargez ces fichiers lorsque vous avez besoin d'une couverture complète des commandes :
references/bash.md— système de fichiers complet, installation/mise à jour, variables d'environnement, modèles de scriptreferences/containers.md— Podman, kubectl, Helmreferences/curl.md— curl pour les requêtes HTTPreferences/agents.md— aider-chat et CLI claude