POSIX
Référence POSIX & Raccourcis Terminal
Le standard POSIX (Portable Operating System Interface) définit un ensemble de spécifications pour assurer la compatibilité entre les systèmes d'exploitation (Linux, macOS, BSD, Unix). Ce document sert de pense-bête pour les raccourcis claviers standard du terminal (readline) ainsi que pour les règles de portabilité d'écriture des scripts.
⌨Raccourcis Clavier du Terminal (Mode Emacs / Readline)
La plupart des shells (Bash, Zsh) utilisent par défaut le mode d'édition Emacs via la bibliothèque readline. Ces raccourcis permettent de naviguer et d'éditer la ligne de commande rapidement.
Édition et suppression
Ctrl + U: Supprime tout depuis le curseur jusqu'au début de la ligne.Ctrl + K: Supprime tout depuis le curseur jusqu'à la fin de la ligne.Ctrl + W: Supprime le mot précédent juste avant le curseur (délimité par des espaces).Alt + Backspace: Supprime également le mot précédent (selon la configuration du terminal, s'arrête souvent aux caractères spéciaux comme/ou-).Ctrl + Y: Colle (yank) le dernier élément supprimé avec l'un des raccourcis ci-dessus.Ctrl + _: Annule la dernière modification (Undo).
Déplacement du curseur
Ctrl + A(ouHome) : Déplace le curseur au début de la ligne.Ctrl + E(ouEnd) : Déplace le curseur à la fin de la ligne.Alt + F: Avance le curseur d'un mot (Forward).Alt + B: Recule le curseur d'un mot (Backward).Ctrl + F/Ctrl + B: Avance / recule d'un caractère.
Gestion de l'historique et de l'écran
Ctrl + L: Efface l'écran sans supprimer le texte en cours de saisie (équivalent visuel de la commandeclear).Ctrl + R: Lance une recherche incrémentale inversée dans l'historique des commandes.Ctrl + G: Sort du mode de recherche incrémentale (sans exécuter de commande).Ctrl + P/Ctrl + N: Commande précédente / suivante dans l'historique.
Contrôle des processus
Ctrl + C: Envoie le signalSIGINTpour interrompre le processus en cours.Ctrl + D: Envoie une fin de fichier (EOF). Si la ligne est vide, ferme la session de terminal actuelle.Ctrl + Z: Envoie le signalSIGTSTPpour suspendre le processus en cours (le place en arrière-plan, utilisable ensuite avecbgoufg).
Portabilité du Shell (sh POSIX vs bash)
Pour écrire des scripts système robustes et portables (par exemple pour l'initramfs, des conteneurs légers comme Alpine, ou des systèmes BSD), il faut utiliser #!/bin/sh et respecter la norme POSIX en évitant les "bashismes".
Comparatif syntaxique
| Fonctionnalité | Syntaxe non-standard (Bash-only) | Syntaxe Standard POSIX (sh) |
|---|---|---|
| Interprète | #!/bin/bash |
#!/bin/sh |
| Tests complexes | [[ $var == "val" ]] |
[ "$var" = "val" ] |
| Déclaration fonction | function ma_fonction() { ... } |
ma_fonction() { ... } |
| Portée locale | local var="val" |
Non supporté (utiliser des sous-shells (...) ou des variables globales documentées) |
| Redirection flux | commande &> fichier |
commande > fichier 2>&1 |
| Source de script | source script.sh |
. ./script.sh |
| Substitution | `commande` |
$(commande) (Recommandé par POSIX car imbriquable) |
| Calcul arithmétique | (( var++ )) ou $[var + 1] |
var=$((var + 1)) |
| Tableaux | declare -a tab |
Non supporté (utiliser $@, des chaînes avec séparateurs ou des boucles) |
Commandes Standards & Options Portables
De nombreuses options courantes des commandes GNU (tar, sed, find, etc.) ne sont pas POSIX et échoueront sur d'autres systèmes.
Signaux & Codes de Retour Standards
Signaux Système POSIX Communs
| Valeur | Signal | Action par défaut | Description |
|---|---|---|---|
| 1 | SIGHUP |
Terminaison | Déconnexion du terminal de contrôle (Hangup). |
| 2 | SIGINT |
Terminaison | Interruption depuis le clavier (Ctrl + C). |
| 3 | SIGQUIT |
Terminaison + Core | Demande d'arrêt et de dump mémoire (Ctrl + \). |
| 9 | SIGKILL |
Terminaison immédiate | Arrêt forcé (ne peut pas être intercepté ni ignoré). |
| 13 | SIGPIPE |
Terminaison | Écriture dans un pipe sans lecteur. |
| 15 | SIGTERM |
Terminaison | Signal de terminaison propre par défaut (envoyé par kill). |
Codes de retour (Exit Codes)
0: Succès.1: Erreur générique.126: La commande appelée ne peut pas s'exécuter (problème de permissions).127: Commande introuvable (command not found).128 + N: Processus terminé par le signalN(ex:130pour un arrêt parCtrl + C/SIGINTqui vaut2).
Ressources & Références POSIX
Pour aller plus loin :
- The Open Group POSIX Specification : La spécification officielle (IEEE Std 1003.1) décrivant le comportement du shell et des utilitaires standard.
- POSIX Shell and Utilities Quick Reference : Un condensé de référence par Rich Felker couvrant la grammaire, les expansions et les commandes intégrées standard.
- ShellCheck : L'outil incontournable pour valider vos scripts. Utilisez
shellcheck -s shpour identifier et corriger les bashismes. - The Grymoire - POSIX Shell Tutorial : Un guide pratique et détaillé pour approfondir le fonctionnement du shell standard.