Si vous possédez ne serait-ce qu’une certaine familiarité avec les émulateurs de terminaux sur ordinateurs, vous avez probablement entendu parler de Bash de Linux et de PowerShell de Microsoft. Ces deux éléments sont omniprésents dans la vie des professionnels spécialisés dans l’un ou l’autre système d’exploitation. Cependant, si vous ne vivez pas votre vie quotidienne devant une invite de shell, vous n’avez probablement pas beaucoup réfléchi à la façon dont les deux se compareraient. Dans ce cas, il n’y a jamais eu de meilleur moment pour apprendre !
Qu’est-ce que PowerShell
Microsoft a introduit Powershell en 2006 pour agir comme une interface de ligne de commande qui s’exécute sur un cadre de script polyvalent et puissant. Il a été conçu pour aider les administrateurs Windows à créer de petites applications utilisant des « commandlets » (connues officiellement sous le nom de « cmdlets ») pour automatiser une grande partie de leur travail.
Plus important encore, sa structure de commande et sa « scriptabilité » représentent une refonte complète de l’ancien MS-DOS sur lequel Windows a été initialement construit. Il a une syntaxe plus uniforme et une manière de présenter les informations auxquelles il est facile de s’habituer et de coder.
Cela n’est pas destiné à remplacer la ligne de commande Windows que la plupart des gens sont habitués à exécuter, mais plutôt à la compléter avec ses propres fonctions d’automatisation et de configuration. Par exemple, si vous essayez de gérer un service Microsoft Azure sur le cloud, vous pouvez désormais le faire avec l’outil Connect-AzAccount
commande au lieu d’utiliser une session de bureau à distance.
Comme Bash, PowerShell est entièrement auditable, ce qui permet une utilisation dans des environnements très sensibles où il est essentiel de savoir tout ce qui se passe dans le système.
Conseil: Juste au cas où vous vous poseriez la question, l’invite de commande et Powershell ne sont pas tout à fait identiques. Voici les différences entre l’invite de commande et Powershell.
Qu’est-ce que Bash
Bash est le grand-père de 1989 qui reste pertinent dans les environnements Linux, quels que soient tous les shells plus sophistiqués qui ont tenté de l’éclipser. Tout comme PowerShell, Bash fournit un cadre permettant d’écrire des scripts pour automatiser l’administration beaucoup plus facilement.
Parce que sa structure de commande et sa syntaxe sont omniprésentes dans diverses distributions Linux, BSD et même macOS, de nombreux développeurs se sont habitués à utiliser Bash comme référence pour organiser leurs projets.
Bien que Bash contienne une suite d’opérations de base qui vous permettent d’écrire des scripts et de relayer des informations via le terminal, presque chaque commande que vous tapez dans un terminal avec ce shell est un programme distinct. Par exemple, Bash n’inclut pas le ls
(liste des fichiers) ou cat
(concaténer ou afficher la sortie d’un fichier), mais recherche à la place les exécutables du même nom dans les chemins spécifiés.
Powershell vs Bash : différences
PowerShell et Bash peuvent se ressembler lorsque vous apprenez à les utiliser pour la première fois, mais ce sont essentiellement des bêtes complètement différentes avec des philosophies de conception qui s’opposent parfois. Voici quelques éléments très cruciaux qui les distinguent :
1. Contrôle d’accès des utilisateurs
Si jamais vous souhaitez faire quelque chose d’administratif avec Bash, il vous suffit de faire précéder votre commande de sudo
. Une fois la commande terminée, vous êtes immédiatement ramené au shell utilisateur. L’exécution d’une commande root laisse moins de place à l’erreur et vous oblige à revoir ce que vous faites.
PowerShell, en revanche, ne peut s’exécuter qu’en mode administratif ou utilisateur. Si vous souhaitez basculer entre eux, vous devez ouvrir une nouvelle session. Pour ouvrir PowerShell en mode administratif, vous devez cliquer avec le bouton droit sur l’icône du programme et cliquer sur « Exécuter en tant qu’administrateur ». Alternativement, au cours d’une session de terminal, vous pouvez simplement taper Start-Process powershell -verb runAs
et il ouvrira une deuxième session avec des privilèges administratifs.
2. Sortie
Lorsque vous tapez une commande dans Bash, vous exécutez essentiellement un programme distinct et cet exécutable vous donnera le résultat souhaité. La manière dont la sortie est formatée dépend de la manière dont le développeur de ce programme particulier souhaite la formater.
Il y a beaucoup de flexibilité ici, ce qui est formidable, mais l’inconvénient est le manque d’uniformité.
La sortie des commandes dans PowerShell est généralement formatée selon une seule norme unifiée. Le texte que vous voyez à l’écran est une version lisible des données qui peut être interprétée par d’autres programmes.
Cela permet aux personnes qui écrivent des scripts et des applications d’utiliser simplement les fonctionnalités et commandes de PowerShell pour récupérer toutes les informations dont elles ont besoin.
3. Syntaxe
Bash utilise une syntaxe très unique (par exemple, if [condition]; then code here; fi
) que l’on ne voit généralement pas dans d’autres langages de script. Ce n’est pas incroyablement difficile à utiliser, mais cela peut être un peu non conventionnel pour quelqu’un qui commence tout juste à apprendre à écrire des scripts.
Quant aux commandes utilisateur, il n’y a pas d’uniformité claire. Chaque programme est livré avec sa propre syntaxe de commande. Il faut savoir les utiliser avant de pouvoir les intégrer dans votre script bash.
La syntaxe de script de PowerShell est similaire à celle de toute autre application .NET (par exemple, if (condition) { ...code here... }
). Pour les personnes habituées à évoluer au sein du propre écosystème de Microsoft, il n’y a pratiquement aucune courbe d’apprentissage.
Les commandes utilisateur suivent une structure rigide : un verbe, suivi d’un tiret, suivi d’un nom. Par exemple, Get-ChildItem
listera tous les fichiers du répertoire actuel. Les commandes qui ne sont pas spécifiques à PowerShell peuvent toujours suivre une structure similaire à Bash. Si vous l’utilisez sous Linux, vous pourrez toujours exécuter chaque commande Linux.
4 : Flexibilité
Si vous maîtrisez Bash, vous saurez comment fonctionner avec les environnements de terminaux d’innombrables distributions Linux, l’écosystème BSD et même macOS. C’est de loin le roi de l’universalité. Bien que macOS soit passé à zsh en 2019, l’esprit Bash est toujours à sa base.
PowerShell est capable de fonctionner dans pratiquement n’importe quel système d’exploitation, mais il est principalement destiné à fonctionner avec les propres produits de Microsoft. Si vous l’utilisez, vous le faites très probablement sous Windows.
Si tout ce que vous apprenez sont des conventions spécifiques à PowerShell, vous allez essentiellement vous retrouver coincé sur une île avec les produits Microsoft. Même si cela ne doit pas nécessairement être le cas, force est de constater que la coque ne brille vraiment que dans cette situation. En ce qui concerne les inconvénients, cependant, ils représentent une part énorme du marché mondial des ordinateurs de bureau.
Questions fréquemment posées
Puis-je exécuter bash sous Windows et PowerShell sous Linux ?
Pour exécuter bash sous Windows, installez simplement le sous-système Windows pour Linux en exécutant une invite de commande en tant qu’administrateur et en tapant wsl --install
. Vous aurez un accès instantané aux commandes bash une fois l’installation terminée.
PowerShell sous Linux est un peu plus délicat et dépend de la distribution. Microsoft comprend des instructions sur son site Web pour installer PowerShell sur les distributions les plus populaires. Vous remarquerez peut-être qu’Arch Linux est absent de cette liste, mais il existe en tant que powershell
paquet dans l’AUR.
Ai-je besoin de Bash sous Windows ?
Pas nécessairement, mais cela vous aidera beaucoup si vous envisagez d’utiliser des éléments davantage conçus pour Linux (Python, Git, etc.). L’avoir à portée de main ne pouvait pas faire de mal. L’utilisation du sous-système Windows pour Linux pour installer Bash vous permet également de disposer d’un shell Linux complet avec lequel expérimenter, ce qui constitue un excellent moyen de vous présenter à l’environnement d’exploitation si vous n’êtes pas familier.
Les commandes Windows DOS fonctionnent-elles dans PowerShell ?
C’est généralement le cas. PowerShell ne remplace pas l’invite de commande Windows d’origine. Au lieu de cela, il s’agit d’une couche qui fonctionne par-dessus pour fournir de nouvelles fonctionnalités. Vous ne manquerez probablement rien si vous utilisez simplement PowerShell au lieu du cmd.exe éprouvé.