Outils de ligne de commande Windows

En tant que développeurs qui passent la majorité de notre temps à coder sous OSX et Linux, nous étions curieux de voir à quoi pourrait ressembler une configuration de ligne de commande moderne sous Windows.

Une enquête destinée aux développeurs réalisée par StackOverflow nous a rappelé qu'il y avait plus de développeurs qui utilisent Windows que n'importe quel autre système d'exploitation. Nous étions donc curieux de savoir si les outils disponibles étaient à la hauteur de ceux que nous avions l'habitude d'utiliser dans un environnement *nix.

Après avoir passé un certain temps à évaluer l’environnement des outils de la CLI Windows, nous nous sommes tournés vers un ensemble d’outils qui, selon nous, nous permettent d’atteindre 95% du chemin.

En fin de compte, nous avons trouvé une combinaison de:

  • PowerShell
  • ConEmu
  • PSReadLine
  • PSGet
  • Chocolat
  • Babun (facultatif)

Vous trouverez ci-dessous d'autres remarques sur les avantages de ces différentes machines.

PowerShell (interface système)

  • Beaucoup plus proche d'un véritable "shell" que cmd.exe, ce qui nous offre un environnement de script puissant pour l'automatisation des tâches. Vous pouvez le comparer à Bash ou à zsh.
  • Saisie semi-automatique du répertoire et des noms de fichiers
  • Saisie semi-automatique des noms d'application
  • Dispose d'alias et de commandes intégrés (appelés cmdlets, par exemple Select-String comme grep, Invoke-Elevated comme sudo, Sort-Object comme sort, Get-Process liste tous les processus actifs). Si vous passez d'un autre shell à PS, Set-Alias vous permet de mapper les alias auxquels vous êtes habitué à des équivalents Windows. Par exemple, Set-Alias server python -m http.server 8000 lance un serveur Python lorsque l'alias server est utilisé.
  • Les alias peuvent être conservés dans un profil PowerShell
  • Prise en charge du piping, comme Unix. Contrairement à Unix, elle redirige les objets plutôt que les flux de texte. Il est nécessaire de s'y habituer, mais cela évite d'avoir à effectuer des réparations lorsque vous souhaitez extraire une propriété.
  • Compatible avec les modules PSGet est un gestionnaire de packages pour PowerShell vous permettant de l'étendre facilement.
  • Vous pouvez également envisager d'utiliser Posh-Git, un script PowerShell pour git permettant la saisie semi-automatique via la touche de tabulation.

Si les quiz de culture générale vous intéressent, voici pourquoi MS a créé PowerShell à partir de l'architecte principal.

PSReadLine (assistants de modification de la console)

  • Améliore considérablement l'expérience d'édition sur la console
  • Mise en surbrillance de la syntaxe dès que vous commencez à saisir des commandes. Indique clairement les erreurs de syntaxe avec un caractère ">" rouge.
  • Combinaisons de touches hautement personnalisables
  • Saisie semi-automatique de style bash
  • Recherche interactive dans l'historique Bash/zsh (Ctrl+R). De plus, un puissant historique des commandes permet de parcourir l'historique. Utilisez les touches fléchées pour consulter facilement les commandes multilignes précédentes au lieu de n'utiliser que la dernière ligne de la commande.
  • Fonctionnalité de copier-coller/couper appropriée (Ctrl+C/X/V devrait fonctionner correctement)
  • Bonne prise en charge pour annuler/répéter
  • L'enregistrement de l'historique est automatique

Vous pouvez également utiliser Clink, qui dispose d'un ensemble de fonctionnalités similaire, mais n'a pas été strictement écrit pour PowerShell.

ConEmu (hôte de la console)

  • Un émulateur de console avancé dans lequel vous pouvez exécuter l'interface système de votre choix.
  • Permet d'ouvrir plusieurs terminaux dans différents onglets. Il est facile de lancer des terminaux en tant qu'utilisateurs différents.
  • Extrêmement personnalisable : vous pouvez modifier tout, des raccourcis à la couleur de la barre d'état, en passant par la sélection de texte.
  • Compatible avec l'écran partagé
  • Des applications IUG simples peuvent être exécutées dans des onglets
  • Prise en charge des listes de renvoi Windows 7 et versions ultérieures
  • Permet un redimensionnement fluide de la fenêtre
  • Anticrénelage des polices Windows
  • Les onglets de démarrage peuvent être entièrement personnalisés pour commencer à partir d'un répertoire particulier
  • Copier/Coller intelligent

Certaines personnes aiment encore utiliser Console2, et Scott Hanselman a publié un article de blog à ce sujet.

Cmdr

Cmder, un package d'émulation de console qui combine ConEmu, Clink et msysgit, vous offre des assistants Git et vaut le détour. Cmder offre une expérience plus agréable avec ConEmu par défaut grâce au jeu de couleurs Monokai.

Il offre également d'autres avantages, tels que l'intégration à des applications IUG telles que Sublime Text.

Chocolatey (gestionnaire de packages)

  • En gros, Homebrew pour Windows vous permet d'intégrer vos applications Windows préférées en toute simplicité. Il existe actuellement ~3K packages disponibles qui peuvent être mis à jour directement à l'aide de Chocolatey.
  • Différent de Nuget. NuGet est conçu pour les bibliothèques de développement. Chocolatey est un gestionnaire de paquets de machines binaires et repose sur l’infrastructure NuGet.
  • Propose efficacement des compilations silencieuses

Vous pourriez également être intéressé par OneGet, le gestionnaire de packages..manager de Microsoft, qui devrait fonctionner avec Chocolatey sous Windows 10.

Babun (Cygwin préconfiguré)

  • Cygwin (l'environnement de type Linux pour Windows) moins certaines des bizarreries historiquement connues. La configuration globale est beaucoup plus simple à l'aide du programme d'installation Babun. Si vous êtes particulièrement expérimenté avec Unix et que vous préférez éviter d'apprendre PowerShell, envisagez d'utiliser cygwin/Babun.
  • Inclut un gestionnaire de packages appelé pact (un peu semblable à brew) semblable à apt-get. C'est un problème majeur, car vous devez actuellement réexécuter le programme d'installation Cygwin lorsque vous ajoutez des packages au lieu d'utiliser simplement le pacte.
  • Vim préinstallé et préconfiguré
  • Compatibilité intégrée avec oh-my-zsh
  • Mises à jour automatiques

Documentation complémentaire