Clink ou comment bashifier cmd.exe

Si vous avez un peu l'habitude d'utiliser bash (ou zsh, ou ...) dans un terminal Linux ou Mac, lorsque vous vous retrouvez dans l'invite de commande Windows (cmd.exe) vous pleurez sur le manque de fonctionnalités et sur l'"ergonomie" du truc :
  • complétion limitée aux noms de fichiers (péniblement depuis XP ou après bricolage avec Windows2000), fonctionnant mal si il n'y a pas un espace avant le nom, et ne sachant pas gérér les chemins avec '/' bien que Windows sache les interpréter
  • pas de possibilité de recherche
  • fonctionnement débile lors de l'accès à une commande dans l'historique (on peut "remonter" pour retrouver une commande mais si on l'utilise il faut "redescendre" pour naviguer dans les dernières commandes)
  • ... pour ne citer que quelques lacunes :^(
Un collègue vient de me faire découvrir un outil génial : clink. Selon son auteur : « Clink combines the native Windows shell cmd.exe with the powerful command line editing features of the GNU Readline library, which provides rich completion, history, and line-editing capabilities. Readline is best known for its use in the well-known Unix shell Bash, the standard shell for Mac OS X and many Linux distributions. »

À la différence d'utiliser le "vrai" bash porté sous Windows (version Cygwin, GnuWin32 ou MinGW / MSYS) clink utilise l'injection de dll pour ajouter des fonctionnalités au cmd.exe du système.

Parmi les points à noter :
  • clink sait étendre cmd.exe en version 32 ou 64bit (2 dll différentes)
  • vous pouvez décider de l'appeler seulement en cours de session ou vous pouvez l'utiliser pour toutes les sessions (clink passe par l'autorun cmd.exe pour se lancer en même temps que cmd.exe)
  • disponible en version "setup" ou "portable"
  • clink ajoute de la complétion pour les appels des outils tiers (git, svn, ...) et cette complétion est scriptée en Lua
  • parmi les nombreuses fonctions d'édition, vous pouvez simplement copier / coller dans le presse-papiers système directement depuis le clavier
  • si vous êtes utilisateur d'Emacs, vous retrouverez plein de commandes de navigation ou d'édition (naviguer entre les mots, inverser des lettres, mettre en capitale / minuscule / majuscule (il semble y avoir aussi un mode d'édition "vi" mais je n'ai pas encore réussi à le faire fonctionner)
  • open-source : hébergé sur GitHub
Clink est un outil que je recommande chaudement ! :^D

Comments