Le deux-points shell : une commande nulle très utile

Original : A shell colon does nothing. Use it anyway

Pourquoi c'est important

Ces idiomes shell POSIX améliorent la robustesse et la concision des scripts de production.

Filip Roséen publie le 23 juillet 2026 un article sur l'opérateur `:` (null-command) en shell POSIX. Cette commande builtin, héritée du Thompson shell de 1971, ne fait rien mais offre des usages puissants : validation d'arguments, valeurs par défaut, troncature de fichiers et tests de permissions.

Dans un article publié le 23 juillet 2026 sur refp.se, l'auteur Filip Roséen présente les usages méconnus du deux-points (`:`) en shell POSIX, surnommé « null-command ».

Origine : `:` remonte au Thompson shell de 1971, où il servait d'étiquette de label et de premier marqueur de commentaire sous Unix.

Usages clés illustrés dans l'article :

- **Validation d'argument obligatoire** : `: "${1:?missing argument, aborting.}"` remplace un bloc `if/fi` de quatre lignes. Si la variable est vide ou non définie, le diagnostic est affiché sur stderr et le script s'arrête.

- **Valeurs par défaut** : `: "${DATA_DIR:=/var/data}"` initialise une variable sans exécuter de commande parasite.

- **Troncature de fichiers** : `: > error.log` vide un fichier ; `: > error.log > access.log` en vide deux simultanément.

- **Test de lisibilité/écriture** : `( : < dataset.json ) && echo YES` vérifie qu'un fichier est lisible.

- **Placeholder dans `if/then`** : `:` sert de corps vide légal dans une branche `then` sans commande réelle.

- **Trap minimaliste** : `trap : INT` exige une commande valide ; `:` suffit.

La syntaxe `${name:?diagnostic}` relève de la *parameter expansion* POSIX standard.

Source

refp.se — Lire l'original →