Un terminal pour Windows

Si vous utilisez Windows et que vous êtes développeur vous savez probablement à quel point ce système d'exploitation est le seul à ne pas posséder un Terminal digne de ce nom. Dans cet article, je vous parle de plusieurs solutions pour palier à ce problème.

Publié le par Thibault Houdon (mis à jour le )
paceTemps de lecture estimé : 10 minutes

Une des raisons pour lesquelles je ne développe plus sur Windows, mais principalement sur Mac OS et Linux est, entre autres, l'absence d'un terminal digne de ce nom.

Dans cet article, je vais vous parler de terminal, de shell et des solutions que vous pouvez adopter sur Windows pour vous faciliter la vie.

Il existe des dizaines de systèmes d'exploitation différents, les trois plus connus et utilisés étant Windows, Mac OS et Linux. Chaque système d'exploitation possède ses particularités, mais vous allez voir assez rapidement que Windows fait un peu jeu à part.

Avant d'aller plus loin, il est important de bien comprendre la différence entre deux termes que je vais utiliser tout au long de cet article : le terminal et le shell.

Terminal VS Shell

Il existe en effet deux moyens d'interragir avec votre ordinateur : avec une interface graphique (l'explorateur windows ou le finder sur Mac OS), ou via des lignes de commandes.

Quand on parle de terminal, il s'agit en fait d'une application à interface graphique, qui nous permet d'intéragir, grâce à des lignes de commandes, avec notre ordinateur. Le terminal ce n'est donc rien de plus qu'une interface.

Ce n'est pas le terminal lui-même qui exécute les lignes des commandes, mais le shell.

Le terminal de Mac OS, avec un shell Bash.

Le terminal de Linux sur Ubuntu, avec un shell Bash.

Le shell, c'est le programme auquel le terminal nous donne accès.

Il va recevoir les commandes que vous tapez dans le terminal et les envoyer à votre système d'exploitation. Une fois la commande exécutée, le shell renvoi un résultat, qui est ensuite affiché à l'utilisateur dans le terminal.

Le shell, ça permet donc de manipuler votre ordinateur, via des lignes de commande, sans avoir besoin de jouer directement avec le kernel (ce qui serait un peu plus délicat).

Il existe différents shells qui possèdent chacun leurs propres commandes.

Du côté de Mac OS et Linux, on retrouvera par exemple bash (Bourne-Again Shell), Z-Shell (zsh) ou encore Tenex C Shell (tsch).

Et Windows ?

Windows possède également un terminal connu sous le nom d'invite de commande, qui permet d'exécuter des commandes DOS. Visuellement, l'invite de commande ressemble au terminal de Mac OS et Linux.

L'invite de commande, mon meilleur ami.

Mais sous le capot, c'est une autre histoire.

Mac OS et Linux sont tous les deux basés sur un système UNIX et possèdent ainsi plusieurs similitudes. Windows lui est basé sur DOS. Peu importe le shell que vous utilisez sur Mac OS ou Linux (bash, zsh, tsch...), les lignes de commandes sont similaires.

Sur Windows par contre, les commandes DOS sont totalement différentes. Il est donc très facile de passer de Mac OS à Linux et inversement, mais moins facile de passer de Mac OS ou Linux, à Windows.

Récemment, Microsoft a ajouté à Windows 10 le Windows Subsystem for Linux (WSL), qui permet aux utilisateurs de Windows d'avoir accès à un espace utilisateur similaire à ce que l'on peut retrouver sur Linux et d'utiliser un shell Bash. Il y a donc du progrès, mais on est encore loin d'une solution native et c'est assez lourd. Comme son nom l'indique, il s'agit d'installer un 'sous-système' Linux sur son système Windows.

Les chemins d'accès sur WindowsUne autre différence majeure entre Mac OS / Linux et Windows se trouve dans les chemins d'accès aux fichiers des différents systèmes d'exploitations. Pour accéder à vos documents sur Mac OS et Linux, le chemin est similaire et ressemblera à ceci /Users/thibh/Documents.

Sur Windows par contre, le chemin ressemblera plutôt à C:\Utilisateurs\thibh\Mes Documents.

Là encore donc, Windows se retrouve seul dans son coin. Qui plus est, le caractère \ est spécial en Python et pose tout un tas de problèmes avec Windows quand on travaille avec des chemins de dossier.

La solution la plus efficace reste de coder sur Mac OS ou Linux.

C'est radical, mais vous aurez un environnement qui est plus agréable à utiliser de manière générale.

Il y a comme on vient d'en parler le fait que vous ayez par défaut accès à un shell bash intégré dans un terminal efficace, que les chemins de dossiers sont similaires sur les deux OS, mais aussi des petits détails comme le fait que vous ne pouvez pas créer de dossier caché sur Windows avec l'explorateur de fichiers (essayez de créer un dossier qui commence par un point, vous comprendrez...) ou que vous soyez souvent obligé d'installer tout un tas de programmes supplémentaires par exemple pour vous logger en ssh sur un serveur (avec PuTTY).

Heureusement, si vous n'avez pas le choix de changer de système d'exploitation, il existe plusieurs solutions qui permettent de rendre l'expérience moins désagréable.

Le Windows Subsystem for Linux (WSL)

La première, c'est d'utiliser le Windows Subsystem pour Linux, qui est maintenant disponible sur Windows 10, et qui vous permettra d'avoir accès (entre autres) à un shell bash.

Avantages

  • Plus qu'un simple émulateur de terminal

Inconvénients

  • Assez récent et donc encore incomplet
  • Plus long à installer qu'un émulateur portable

Cmder

C'est mon émulateur de terminal préféré sur Windows. Il permet également d'avoir accès à un shell bash, est portable, assez léger, rapide à installer, et contient Git pour windows dans sa version complète. Avec cmder vous êtes donc rapidement opérationnel !

Avantages

  • Inclut les commandes de Git
  • Onglets multiples disponibles

Inconvénients

  • Consomme beaucoup de ressources

Hyper

Hyper est un émulateur de terminal assez récent qui a de nombreux adeptes. Son gros avantage, c'est qu'il repose sur Electron et est donc disponible pour Windows, Mac OS et Linux. Si vous souhaitez avoir le même terminal sur les trois OS, c'est une très bonne solution.

Avantages

  • Disponible sur Windows, Mac OS et Linux
  • Plusieurs thèmes disponibles
  • Personnalisation avancée avec système de plugins

Inconvénients

  • Lent en général
  • Assez instable

Il existe des dizaines d'émulateurs de terminal pour Windows.

Le mieux reste de les tester et de trouver celui qui vous convient le mieux.

Parmi les autres émulateurs disponibles, on peut citer :

  • ZOC
  • ConEmu (sur lequel est basé cmder)
  • Terminus
  • PuTTY (pratique si vous utilisez ssh)
  • Git Bash