Communitygithub.com

Compétences Terminal & CLI

Référence complète pour travailler dans un terminal Linux, couvrant tout, des commandes bash de base à l'orchestration de conteneurs et à l'exécution d'agents IA.

Qu'est-ce que Compétences Terminal & CLI ?

Cette compétence constitue une référence centrale pour tout développeur ou agent IA travaillant dans un environnement Linux. Elle fournit des modèles de commandes essentiels pour le shell bash, la navigation dans le système de fichiers, l'écriture de scripts et les opérations courantes. La compétence est organisée de manière à pouvoir être utilisée directement par des agents comme Claude Code ou Cursor, avec des motifs clairs à exécuter. Elle inclut également des références externes détaillées pour les sujets avancés tels que la gestion des conteneurs (Podman, Kubernetes), les requêtes HTTP avec curl, et l'exécution d'agents IA avec aider-chat ou la CLI Claude. L'objectif est de réduire le besoin de mémoire à long terme en fournissant un guide succinct et actionnable.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add roebi/agent-skills

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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 :

SujetFichier de référence
Bash de base : pipes, scripts, système de fichiers, installation, variables d'environnementreferences/bash.md
Conteneurs : Podman, Kubernetes (kubectl), Helmreferences/containers.md
Requêtes HTTP : curlreferences/curl.md
Agents IA : aider-chat, CLI claudereferences/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 pipefail pour 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 script
  • references/containers.md — Podman, kubectl, Helm
  • references/curl.md — curl pour les requêtes HTTP
  • references/agents.md — aider-chat et CLI claude

Skills associés