Découvrez la puissance de Bash sur Windows

Microsoft Windows est peut-être l'acteur dominant sur le bureau, mais le marché des logiciels open source en croissance rapide - en particulier pour les outils d'administration et de développement - favorise clairement Linux. Sans parler du marché mobile, où Android utilise des variantes Linux. Si vous êtes un développeur sous Windows, le rythme pour vous familiariser avec les capacités Linux ne cesse de devenir de plus en plus fort.

Au fil des ans, Microsoft a introduit diverses solutions de contournement pour utiliser les fonctionnalités Linux sur Windows, telles que PowerShell avec SSH et Cygwin et MSYS. L'exécution de Linux dans une machine virtuelle est une autre option. Mais les machines virtuelles consomment une quantité importante de ressources et ne fournissent pas une expérience Linux de première classe, car vous ne pouvez pas modifier les fichiers locaux ou obtenir un accès complet aux lecteurs locaux, par exemple.

Alors que le monde informatique se tourne vers Linux pour de nombreux projets, Microsoft a mis au point une nouvelle offre pour exploiter ce marché en croissance. Bash sur Windows est la réponse. Ici, nous vous guiderons à travers l'installation de Bash sur Windows et vous donnerons un aperçu de ce que vous pouvez faire - et pourquoi vous le feriez - dans la ligne de commande Linux.

Un aperçu de Bash sur Windows

Bash sur Windows est une nouvelle fonctionnalité ajoutée à Windows 10. Microsoft s'est associé à Canonical, alias les créateurs d'Ubuntu Linux, pour créer cette nouvelle infrastructure sous Windows appelée sous-système Windows pour Linux (WSL). Il permet aux développeurs d'accéder à un ensemble complet d'Ubuntu CLI et d'utilitaires. Avec une expérience Linux native, les développeurs peuvent exécuter des commandes Linux sur Windows, y compris l'accès aux fichiers et lecteurs locaux. Comme Linux est nativement intégré à Windows, les développeurs ont la possibilité de travailler sur le même fichier sous Linux et Windows. En termes simples, Bash sur Windows apporte la zone utilisateur Ubuntu à Windows sans le noyau Linux.

Bash contre PowerShell

Microsoft a déjà un shell de commande dans PowerShell. Alors, en quoi Bash sur Windows diffère-t-il? PowerShell est le cadre de gestion de la configuration de Microsoft pour l'automatisation des tâches. Il est utilisé pour gérer Windows avec son architecture orientée API. Bash, d'autre part, s'appuie principalement sur des fichiers texte pour l'automatisation et le développement. Les deux diffèrent par leur mise au point et leur conception. Par exemple, lorsque vous répertoriez des fichiers dans un répertoire à l'aide de la lscommande, PowerShell affiche la sortie sous forme d'objets fichier, tandis que Bash sous Windows affiche la sortie sous la forme d'un ensemble de chaînes. Heureusement, pour les administrateurs Windows, vous pouvez travailler avec les deux solutions côte à côte et tirer le meilleur parti des deux mondes.

Un mot d'avertissement: PowerShell a des alias qui vous permettent de penser que vous exécutez des commandes Bash traditionnelles lorsque, en fait, vous exécutez des applets de commande PowerShell. Cela peut faire trébucher certaines personnes. Par exemple, lsest un alias pour la Get-ChildItemcommande. De même, pwdest un alias pour Get-Locationet cdest un alias pour Set-Location. Pour obtenir la liste de tous les alias dans PowerShell, utilisez l' Get-Aliasapplet de commande.

Bash sur Windows offre de multiples avantages aux développeurs open source. En apportant des fonctionnalités Linux natives à Windows, Bash sur Windows élimine le besoin d'exécuter un double démarrage avec Ubuntu pour accéder aux fonctionnalités Linux. Vous n'avez pas besoin d'utiliser Mac OS X, d'exécuter une machine virtuelle ou de créer des solutions de contournement à l'aide de Cygwin. Il fournit l'ensemble d'outils requis pour écrire et créer du code pour vos scénarios et plates-formes. En accédant au système de fichiers Windows depuis Bash, vous pouvez travailler sur les mêmes fichiers à l'aide de Windows ou de l'interface de ligne de commande Linux.

Comment Microsoft a-t-il porté Bash sur Windows?

Lors de la conférence Build d'avril 2016, Microsoft a annoncé le sous-système Windows pour Linux (WSL) à la surprise de beaucoup. Né d'un partenariat avec Canonical, Bash sur Windows a d'abord été livré avec la mise à jour anniversaire de Windows 10. Il se compose de deux parties: le sous-système principal et un package. Le sous-système principal fait déjà partie de Windows 10 Insider Builds et propose l'API Linux sur Windows, ce qui signifie que vous pouvez charger nativement les bibliothèques et exécutables Linux. Canonical fournit le progiciel en option. Ce progiciel offre les outils Bash et CLI requis pour l'environnement Linux.

Installation de Bash

Pour exécuter Bash sous Windows, votre système doit exécuter la mise à jour anniversaire Windows 10 x64 Build 14393 ou une version ultérieure. Vous découvrez la construction en tapant winverdans la zone de commande.

Si la version de build est inférieure à 14393, vous ne pourrez pas installer Bash.

Pour activer Bash sur une version prise en charge, vous devez d'abord activer le mode développeur. Pour ce faire, rendez-vous dans Paramètres, cliquez sur Pour les développeurs et sélectionnez le bouton radio Mode développeur. Une fois cela fait, vous serez invité à confirmer.

Une fois que cela a été fait, la fonctionnalité du sous-système Windows pour Linux doit être activée. Le moyen le plus simple de procéder consiste à utiliser une applet de commande PowerShell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Pour ouvrir Bash sous Windows, ouvrez l'invite de commande, saisissez bashet acceptez le contrat de licence. Lorsque Bash s'installe, il effectue quelques modifications sur votre système:

  • Une image en mode utilisateur Ubuntu est téléchargée.
  • Un dossier caché situé à %localappdata%\lxss\ est créé.
  • Un raccourci est placé sur le bureau.

Pour exécuter Bash, vous pouvez maintenant accéder à l'invite de commande ou utiliser l'icône de raccourci du bureau.

Une fois l'installation réussie de Bash, le système vous invite à créer un nom d'utilisateur et un mot de passe Unix. Ce nom d'utilisateur et ce mot de passe sont destinés à Bash et ne concernent en aucun cas votre environnement Windows.

Premiers pas avec les commandes

Une fois dans Bash, vous avez quelques commandes disponibles pour gérer WSL et l'image Ubuntu.

  • lxrun: Pour gérer l'instance WSL
  • lxrun/install: Pour démarrer la procédure de téléchargement et d'installation
  • lxrun/uninstall: Pour désinstaller l'image Ubuntu
  • lxrun/update: Pour mettre à jour l'index du package WSL
  • lxrun/setdefaultuser: Pour définir le Bash par défaut sur l'utilisateur Ubuntu

Bash sur Windows vous permet bien entendu d'exécuter de nombreuses commandes Bash «traditionnelles». Par exemple:

  • grep: Pour rechercher des lignes qui correspondent à un motif
  • sed: Pour remplacer une chaîne
  • echo: Pour afficher la valeur à l'écran
  • var=2: Pour créer une variable pour $var
  • =!=: Pour comparer de petits extraits de textes

Commandes de navigation

Pour la navigation, vous pouvez également utiliser la commande Windows DOS cdpour parcourir la structure des dossiers.

  • cd temp: Remplace le répertoire de travail par le dossier nommé temp
  • cd\: Vous amène au répertoire racine. Comme Ubuntu n'a pas de lettres de lecteur comme Windows, le répertoire racine serait le répertoire de niveau supérieur.
  • cd..: Prend l'invite d'un niveau vers le haut (c'est-à-dire vers le répertoire parent)
  • cd~: Vous amène au répertoire de base

Cependant, cddans PowerShell est légèrement différent dans Bash sur Ubuntu. Dans l'environnement WSL, vos lecteurs Windows sont stockés dans le /mntdossier et le nom du lecteur est utilisé comme sous-dossier. Lorsque vous utilisez la cdcommande, vous devez modifier le chemin en conséquence.

Afficher les commandes

Pour vérifier le chemin et le contenu d'un répertoire, voici quelques exemples:

  • pwd: Imprime le chemin ou le répertoire dans lequel vous vous trouvez à l'écran
  • ls: Affiche les fichiers dans un répertoire

Commandes d'aide

Si vous souhaitez comprendre la fonctionnalité et les paramètres associés à chaque commande, la mancommande peut être utilisée.

Tapez man et il affichera le synopsis de ce à quoi sert la commande et les paramètres associés. Ceci est similaire à la helpcommande PowerShell .

Modification des commandes

L'un des avantages de Bash est que vous travaillez avec du texte brut. Cela signifie que vous n'avez pas à vous soucier du registre ou des paramètres du programme. Que vous souhaitiez modifier la séquence de démarrage ou la configuration du serveur Web, modifiez simplement le fichier texte correspondant. Pour effectuer efficacement les tâches d'édition, vous avez besoin d'un bon éditeur de texte. Bash propose des éditeurs puissants pour vous faciliter la tâche. Quelques bons exemples d'éditeurs de texte disponibles dans Bash sont nanoet vi.

Gestion des packages dans Bash

Étant donné que vous utilisez essentiellement Linux, vous disposez également désormais de commandes de gestion de packages disponibles sous la forme de apt-get. Quelques exemples:

  • sudo apt-get update: Actualise la liste des référentiels à extraire
  • sudo apt-get upgrade: Met à niveau tous les logiciels vers la dernière version
  • apt-cache search app_name: Recherche dans le référentiel une application particulière
  • sudo apt-get install apt-name: Télécharge et installe l'application particulière

sudoest ajouté à toutes les commandes pour vous permettre d'exécuter une commande sous un autre utilisateur, le super-utilisateur (ou admin) par défaut. Elle est similaire à la technique «exécuter en tant qu'administrateur» dans Windows.

Commandes de mise en réseau

Pour télécharger des fichiers via HTTP à partir d'un serveur ou d'une URL, vous pouvez maintenant utiliser la curlcommande. Cette commande est similaire à l' Invoke-WebRequestapplet de commande de PowerShell .

De même, vous pouvez vous connecter à un autre ordinateur Linux distant et y exécuter des commandes. Puisque nous sommes maintenant sous Linux, nous avons enfin un vrai client SSH avec lequel travailler. Plutôt que d'utiliser Cygwin ou la version bêta actuelle de l'implémentation d'OpenSSH pour Windows, nous pouvons maintenant exécuter SSH de manière native via la sshcommande:

nom d'utilisateur ssh @ abc.com

Bien que nous parlions d'OpenSSH, nous avons également la possibilité native de copier des fichiers en toute sécurité via SCP à l'aide de la scpcommande intégrée :

scp fichier local [email protected]: remotedirectory / remotefile

Avec Bash sur Windows, vous avez maintenant de nombreuses autres fonctionnalités à portée de main:

  • Des outils tels que Git, Python et Ruby directement sur Windows
  • Éditeurs de ligne de commande tels que emacs et vi
  • Accès au système de fichiers Windows à partir de l'environnement Bash
  • Support utilisateur Linux
  • Prise en charge de Symlink
  • Montage du stockage via /mnt

Quels sont les cas d'utilisation courants de Bash sous Windows?

Actuellement, de nombreux développeurs utilisent des outils Windows et Linux, ce qui signifie qu'ils doivent effectuer un double démarrage ou exécuter Linux dans une machine virtuelle pour obtenir les capacités de l'interface de ligne de commande. Lorsqu'ils peuvent exécuter ces outils dans Windows, Windows devient leur bureau principal. Dans ce cas, ils n'ont pas à porter les applications et services Linux sur les systèmes Windows. Alors que certaines personnes ont pu exécuter des applications GUI Linux dans Windows, de nombreuses personnes disposent d'une interface de ligne de commande Linux pratique pour effectuer des tâches simples sans acheter une machine Linux dédiée auprès d'Azure ou passer à un appareil Mac à des fins simples. Comme la création de scripts est facile sur Bash, vous pouvez automatiser les tâches de développement telles que la sauvegarde de sites Web dans Apache.

Par exemple, de nombreux développeurs utilisent GitHub pour les tâches de contrôle de version. Pour accéder à GitHub sous Windows, vous devez installer GitHub pour Windows, puis utiliser les commandes commit et push pour valider les modifications. Alternativement, vous devez télécharger l'utilitaire Git, ce qui est un processus fastidieux. Avec Bash sur Windows, votre travail devient simple:

apt-get install git

git commit

git push

De plus, sous Bash, vous n'avez besoin d'aucun outil tiers pour travailler avec les types de fichiers Linux traditionnels tels que les archives tar GZIP (fichiers tar.gz).

Quels sont les inconvénients de l'utilisation de Bash sous Windows?

Bash sur Windows est toujours en version bêta et contient quelques aspérités. Microsoft dit que Bash sur Windows pourrait ne pas exécuter parfaitement tous vos scripts pour le moment. Cependant, Microsoft surveille attentivement les performances et les commentaires, et apporte des modifications proactives à cette solution.

Deuxièmement, Bash sur Windows a été créé pour la communauté de développement. Il n'a pas été conçu pour gérer les environnements Windows. Bien que vous puissiez faire des choses comme exécuter des démons de serveur dans WSL, il n'offre pas toutes les capacités d'une machine virtuelle Linux complète. Si vous avez l'intention d'exécuter des processus serveur sous des charges de travail de production sur Ubuntu, vous devez rechercher d'autres alternatives pour exécuter un système d'exploitation Linux complet.

Enfin, Bash sur Windows apporte les fonctionnalités Linux à Windows. Cependant, les outils Linux ne pourront pas interagir avec les outils et applications Windows. Cela signifie qu'il n'y a pas de capacités multiplateformes en raison de leurs différences d'architecture inhérentes.

Bash sur Windows en est encore à ses débuts. Bien qu'il existe certaines restrictions à cette solution, Microsoft travaille activement à l'ajout de capacités supplémentaires pour effacer ces différences et faire de Windows la plate-forme n ° 1 pour chaque type de projet de développement. Gardez un œil sur ce projet de Microsoft. Avec la nouvelle position de Microsoft dans le monde open source, il est sûr de faire de Bash un citoyen de première classe dans Windows au fil du temps.

Articles Liés

  • Le guide essentiel de PowerShell pour Windows, Windows Server et Exchange
  • 10 scripts de sécurité PowerShell essentiels pour les administrateurs Windows
  • Tout sur les fournisseurs et modules PowerShell
  • Go pro: le guide de l'utilisateur de PowerShell