Une propriété méconnue du built-in cd sous zsh

publié le 6 November 2009

J'ai découvert récemment qu'avec zsh, la commande built-in cd accepte deux arguments.

Avec un argument, cd se comporte comme on s'y attend: changement du répertoire courant.

Lorsqu'on fournit un second argument, la sémantique change un peu: zsh va chercher les occurrences du premier argument dans le chemin du répertoire courant, les substituer par le second argument et tenter d'en faire le répertoire courant.

À quoi cela peut-il bien servir?

En ce qui me concerne, je classe tout les documents relatifs à mon engagement à la Haute École Arc dans un répertoire ARC, lui-même subdivisé en un répertoire par années scolaire. La structure de chacun des ces répertoires annuels est pratiquement la même.

Supposons maintenant que je sois en train de m'occuper de l'introduction de mon cours de langages et compilateurs et que je désire aller voir ce que j'ai écrit comme introduction l'année passée. Je peux bien entendu taper

~/ARC/0910/mod-progav/LANCO/cours/01-Intro$ cd ~/ARC/0809/mod-progav/LANCO/cours/01-Intro

ou éventuellement

~/ARC/0910/mod-progav/LANCO/cours/01-Intro$ cd ../../../../../0809/mod-progav/LANCO/cours/01-Intro/

Mais si j'utilise zsh je peux aussi taper

~/ARC/0910/mod-progav/LANCO/cours/01-Intro$ cd 0910 0809

... qui me semble à la fois plus clair et plus facile à taper!