Skip to content

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 (ou Home) : Déplace le curseur au début de la ligne.
  • Ctrl + E (ou End) : 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 commande clear).
  • 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 signal SIGINT pour 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 signal SIGTSTP pour suspendre le processus en cours (le place en arrière-plan, utilisable ensuite avec bg ou fg).

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 signal N (ex: 130 pour un arrêt par Ctrl + C / SIGINT qui vaut 2).

Ressources & Références POSIX

Pour aller plus loin :