Cmder : un émulateur de terminal portable, pratique et complet pour Windows
cmd+++
Le 19 novembre 2018 à 10h04
9 min
Logiciel
Logiciel
Vous utilisez Windows et sa ligne de commandes ? L'outil intégré par Microsoft vous fait déprimer, même lorsque vous utilisez PowerShell ou le bash Ubuntu ? Cmder peut améliorer votre quotidien.
Les systèmes d'exploitation modernes, de Linux à Windows en passant par macOS, proposent une interface graphique qui permet une utilisation simple au quotidien. Mais ils sont toujours livrés avec une « console », un terme qui désigne en général une application permettant d'exécuter des commandes et des scripts quand nécessaire.
S'il est courant sous Linux de voir les utilisateurs se servir d'une console différente en fonction de leur distribution ou de leurs préférences, ce n'est pas forcément le cas sous macOS ou Windows. Pourtant, de nombreuses alternatives existent. L'une des plus complètes est Cmder, une solution open source (sous licence MIT).
Il s'agit en réalité d'un package portable regroupant ConEmu et Clink. De quoi permettre un ensemble plutôt réussi graphiquement, très personnalisable et pratique au quotidien.
Console, Terminal, Tty : d'où ça vient ?
Commençons par un peu de terminologie et d'histoire. Avant que l'informatique personnelle et le PC ne connaissent leur essor au début des années 80, les ordinateurs étaient surtout utilisés en entreprise sous forme de mainframes.
Ces machines centrales permettaient de concentrer une puissance de calcul importante pour l'époque. Ils disposaient au départ d'une interface rudimentaire connue sous le nom de console. Avec le temps, elles ont évolué vers l'utilisation des téléscripteurs (teletypes, ou tty en anglais) en complément des cartes perforées et autres bandes magnétiques.
Les débits étaient alors de l'ordre d'une dizaine de caractères par seconde, une centaine de bauds. Dans le courant des années 70, cette console est complétée par un écran avec des appareils comme le Datapoint 3300. On parle alors de terminaux vidéo (CRT) « dumb » puisqu'ils ne contiennent aucune capacité de calcul, seulement de quoi afficher et transmettre des données, avec un nombre de lignes/colonnes très limité.
Teletype ASR-33 par ArnoldReinhold (licence: CC by SA 3.0)- Dec VT100 par Jason Scott (licence: CC by SA 2.0)
Reliés au mainframe, ils permettaient à plusieurs utilisateurs de l'exploiter simultanément. Ils ont progressivement évolué dans leur composition et leur connectique. Monoblocs à leurs débuts, leur clavier a ensuite pris son indépendance. Ils ont aussi peu à peu intégré des processeurs comme le 8080 d'Intel dans le cas du célèbre VT100 de Dec, lancé en 1978.
Il gérait notamment les séquences d'échappement de l'ANSI (X.364), permettant de déplacer le curseur à l'écran ou de fixer certains paramètres. Un standard parfois encore utilisé aujourd'hui. Le RS232, né au début des années 60, devient peu à peu le protocole privilégié pour un tel usage. On parle alors de console série.
Toutes ces évolutions donneront progressivement naissance aux ordinateurs personnels et à sa fameuse tour, reliée à un écran via un connecteur VGA et à un clavier/souris en PS/2 à partir des années 90. Vous connaissez la suite.
Avant / Après - Source : Microsoft
Terminaux, shells et interpréteurs de commandes
Ces terminologies et concepts historiques sont encore utilisés aujourd'hui, notamment dans les environnements UNIX. On y trouve la console système et les différents terminaux virtuels qui font référence aux bons vieux téléscripteurs (/dev/ttyx
). Le raccourci CTRL + ALT + F1 à Fx (ou gauche/droite) permet de passer de l'un à l'autre.
On peut également accéder à ces terminaux de manière distante. C'est ce qui se passe quand vous utilisez une console série sur un appareil exploitant Linux via un port RS232 classique (/dev/ttySx
) ou un adaptateur USB (/dev/ttyUSBx
).
C'est dans ces terminaux que l'on exécute l'interface utilisateur nommée Shell. Il peut s'agir d'interfaces graphiques (GUI) regroupant l'ensemble des composants de base d'un OS ou d'interfaces en lignes de commandes (CLI). On parle alors d'interpréteur de commandes.
Sous Unix, Bourne-Again shell (bash) est souvent celui utilisé par défaut. Mais bien d'autres existent, comme Debian almquist shell (dash), Friendly interactive shell (fish), Korn shell (ksh) ou encore Z shell (zsh). Vous pouvez en général voir quel shell UNIX vous utilisez avec l'une des deux commandes suivantes :
echo $SHELL
ps -p $$
Windows utilise historiquement l'invite de commandes (cmd.exe). Mais depuis quelques années, Microsoft travaille également sur PowerShell, désormais disponible en open source sous licence MIT.
L'architecture de la console système Windows 10, avec son API et une application permettant de lancer les différents interpréteurs
Un autre exemple est assez connu sous les différents systèmes : Secure Shell (ssh), également un protocole. Il permet un accès distant et sécurisé à une machine grâce à une couche de chiffrement et d'authentification. Il peut être utilisé avec des applications comme OpenSSH, récemment portée sous Windows par Microsoft.
Mais on peut aussi passer par des applications telles que Putty ou TTYEmulator, qui ont la particularité d'être des émulateurs de terminaux. Elles permettent ainsi un terminal en lignes de commandes dans l'interface graphique. On parle alors de pseudoterminaux, ou pty dans le monde Unix. Ils y fonctionnent dans un mode maître/esclave (pts). Une notion encore récente sous Windows, ConPTY ayant été introduit cet été.
Les émulateurs de terminaux
Ils sont en général désignés comme consoles dans les distributions Linux : gnome-terminal, konsole ou xterm. Il en existe aussi de nombreuses autres pour macOS et Windows.
C'est dans cette catégorie que rentre ConEmu qui nous intéresse aujourd'hui. Il permet ainsi de lancer différents interpréteurs de commandes sous Windows comme celui de base, PowerShell, Git Bash ou encore le shell de certaines distributions à travers le sous-système Linux de Windows 10.
Complet et très personnalisable, il peut être renforcé par l'utilisation de Clink qui apporte une meilleure complétion, une persistance de l'historique et une gestion des raccourcis. Regrouper les deux est le choix de l'équipe de Cmder, qui propose son package en deux versions : avec ou sans Git pour Windows.
À la découverte de Cmder
Dans sa version de base, l'outil pèse un peu plus de 25 Mo. Il est portable et peut donc être placé sur une clé USB ou copié dans un répertoire pour être installé. Ce dernier contiendra alors tous les éléments nécessaires au bon fonctionnement de l'application, de la configuration aux alias en passant par l'historique de l'utilisateur.
Au premier lancement, on sera un peu dépaysé par rapport à l'invite de commandes Windows, puisque la fenêtre utilise un niveau léger de transparence, des couleurs, affiche un moteur de recherche et un système d'onglets. Ce dernier permet de naviguer au sein de différentes instances, qui peuvent également être imbriquées au sein d'une même fenêtre.
Pour en créer une nouvelle, un raccourci suffit : CTRL+T. Vous devrez alors choisir l'interpréteur de commande à utiliser, plusieurs étant préconfigurés : PowerShell, Bash (via Git, Mintty ou WSL), avec ou sans droits administrateur. Des raccourcis rapides sont également proposés : MAJ + ALT + 1 à 9.
Vous pouvez aussi le lancer en tant qu'autre utilisateur et choisir la façon d'afficher l'instance : imbriquée en bas ou à droite (de manière plus ou moins large), dans un onglet ou dans une nouvelle fenêtre. On pourra ainsi surveiller le statut de différents serveurs via htop dans une même fenêtre.
Lors de nos différents essais nous n'avons pas rencontré de soucis particuliers, si ce n'est avec certaines applications via OpenSSH sur un Raspberry Pi, comme raspi-config par exemple. L'affichage se met rapidement à clignoter, sans que l'on ne puisse rien faire pour stabiliser la situation.
Chaque onglet peut être renommé, redémarré, dupliqué, fermé ou tué. Vous pouvez modifier l'affinité du processeur (quels cœurs, quelle priorité), effectuer des recherches dans le contenu de chaque fenêtre, modifier le thème graphique utilisé, activer des fonctionnalités de débogage, etc.
Les paramètres sont également assez complets. On y trouve des options pour modifier l'interface graphique élément par élément ou par thèmes prédéfinis, des propositions d'amélioration de l'expérience à travers de petits détails comme l'interpréteur lancé par défaut, la gestion de la barre des tâches Windows, les mises à jour automatiques, etc.
Quelques raccourcis peuvent vous faire gagner du temps. CTRL + R ouvre par exemple une recherche dans l'historique, CTRL + ALT + U remonte d'un niveau dans l'arborescence des répertoires. Les alias peuvent être définis dans /config/aliases
.
Il est également possible de profiter de différentes intégrations. Cmder propose ainsi des options spécifiques pour le gestionnaire de fichiers Far Manager. L'autocomplétion vous proposera différentes commandes ou les répertoires et fichiers à la manière de ce que l'on trouve habituellement sous Linux, ce qui est plutôt appréciable.
Une application simple et pratique
Bref, Cmder renforce légèrement ConEmu qui est déjà un très bon outil de base. Si vous avez l'habitude d'utiliser la ligne de commandes et différents interpréteurs en fonction de vos besoins, il deviendra vite indispensable.
La possibilité de disposer de différentes fenêtres, de plusieurs onglets ou d'imbriquer les instances est très utile. Là aussi on retrouvera des aspects que l'on appréciait dans des émulateurs de terminaux comme Tilix. Avec la montée en puissance de l'open source sous Windows 10 et l'intégration progressive d'outils tels que curl ou openssh, les développeurs ne pouvaient qu'espérer avoir accès à un meilleur terminal.
À défaut d'une invite de commandes Windows qui évolue réellement, un outil comme Cmder est un must have.
Le 19 novembre 2018 à 10h04
Cmder : un émulateur de terminal portable, pratique et complet pour Windows
-
Console, Terminal, Tty : d'où ça vient ?
-
Terminaux, shells et interpréteurs de commandes
-
Les émulateurs de terminaux
-
À la découverte de Cmder
-
Une application simple et pratique
Commentaires (26)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 19/11/2018 à 10h17
#1
Je ne connaissais pas, vais tester ça. Merci pour l’article :)
Le 19/11/2018 à 10h23
#2
ça fait un bon moment que je l’utilise et je me demande comment je faisais sans " />
Le 19/11/2018 à 10h36
#3
Tiens, je ne connaissais pas, je suis en train de tester, ça peut être utile si on switch souvent entre Powershell et Bash, après je pense que je vais rester sur mon WinSSHTerm :)
Le 19/11/2018 à 10h40
#4
à un moment cmder était assez lent à se lancer, est-ce toujours le cas ?
Le 19/11/2018 à 10h48
#5
Je n’ai pas noté de souci particulier de ce côté.
Le 19/11/2018 à 11h00
#6
Non uniquement pour des connexions SSH, mais comme je n’utilise que très rarement PS, ça me va :)
Mais oui, très pratique pour avoir une liste de connexions triées par dossiers :)
Le 19/11/2018 à 11h16
#7
Je l’utilise depuis ses débuts et je ne pourrais plus m’en passer, merci pour cet article NXI " />
Le 19/11/2018 à 11h38
#8
C’est très pratique quand ont le met dans visual studio code comme terminal intégré. Ont se sent très proche de la version Linux.
Le 19/11/2018 à 11h39
#9
Oui, même si VSCode fait déjà un bon travail d’intégration des différents interpréteurs au départ.
Le 19/11/2018 à 11h48
#10
cool j’ai appris plein de truc, et l’autocomplétion si elle est performante va me changer la vie
Le 19/11/2018 à 11h54
#11
echo $0
aussi pour connaitre son shell.Le 19/11/2018 à 12h05
#12
Cmder embarque ConEmu et divers outils.
Donc si tu veux juste la meilleure gestion des shells, tu peux te tourner vers ConEmu seulement. Ca sera plus léger en terme d’espace disque (et du coup plus rapide à mettre à jour).
Aussi, si tu as déjà git-bash (bref si tu fais du Git), ConEmu suffira car tu auras déjà les unix tools (pendant l’install tu peux demander à avoir les unix tools dans le path).
;-)
Le 19/11/2018 à 12h23
#13
Le 19/11/2018 à 12h50
#14
Je me sers pas de la console sous Windows, mais j’ai trouvé l’introduction géniale, merci David !
Le 19/11/2018 à 13h45
#15
J’utilise très peu Windows, mais merci j’étais passé à côté de quelque chose là. Je retrouve un équivalent à ce que j’ai sous Linux.
Le 19/11/2018 à 14h05
#16
Je l’utilisais au début, mais il y a quand même des problèmes de stabilité… Plusieurs fois j’ai du le réinstaller complètement. J’ai fini par laisser tomber.
Le 19/11/2018 à 14h10
#17
Le 19/11/2018 à 14h15
#18
ConEmu tout seul est déjà un grand pas en avant (entre cygwin bash, git, powershell, et toutes les invites de commande des différentes version de Visual Studio ; plus le mode administrateur pour certains shells), j’apprécie particulièrement le mode Quake pour accéder en une combinaison de touches à ma console actuelle.
Je vais jeter un œil aux autres apports de cmder (clink en particulier).
Merci " />
Le 19/11/2018 à 14h32
#19
perso ce que je cherche c’est un véritable équivalent de sshfs. Le peu qui existe sous windows permet de lire un dossier distant mais pas d’avoir une partition vue de manière transparente pour le système (genre pour lire un dossier distant). Mais bon avec l’intégration toujours plus poussée des outils GNU/linux, ça viendra peut être un jour.
Le 19/11/2018 à 14h47
#20
Même en passant par le WSL ? J’ai pas testé mais ça peut simplifier un peu les choses sans doute.
Le 19/11/2018 à 14h48
#21
Merci à next Inpact pour cet article, je ne connaissais pas et j’ai adopté.
Le 19/11/2018 à 15h19
#22
Pas mal en effet, cela dit entre nous je préfère largement Konsole.
Les raccourcis clavier de vim marchent avec tiens ?
Le 19/11/2018 à 16h39
#23
j’avoue j’ai pas retesté depuis. Je regarderais ça à l’occas. Merci de l’info " />
Le 19/11/2018 à 18h56
#24
ConEmu permet aussi l’intégration de Clink. Mais cmder vient avec des preset par défaut bienvenue (notamment l’affichage du statut du repo git).
En tout cas j’utilise conEmu (puis cmder) depuis des années, c’est mon fidèle compagnon pour tout ce qui est ligne de commande :).
On peut wrapper un terminal Wsl, cmd, PowerShell et même intégrer Bash de mes instances Docker. Bref, parfait pour moi.
Le 19/11/2018 à 21h47
#25
Il n’y a que moi qui ait remarqué que le logo de Cmder est la lettre grecque lambda ? Or lambda fait parti du logo d’Half-Life dont on fête aujourd’hui ces 20 ans !!! Half-Life 3 confirmed?!
ps: désolé, fallait la faire et personne n’a osé avant moi " />
Le 19/11/2018 à 22h45
#26
Merci pour ce très bon article !