2 votes

Utiliser Powershell dans WSL

J'ai installé Powershell Core 6 sur mon Windows 10, et j'utilise WSL (Windows Subsystem for Linux) avec Ubuntu 18.04 LTS. J'aime le terminal Powershell 6, il prend en charge un grand nombre de raccourcis clavier que vous attendez dans un éditeur de texte, des choses comme ctrl-backspace pour supprimer des mots entiers et des choses comme ça ; il prend même en charge ctrl-home y ctrl-end pour la suppression jusqu'au début et la suppression jusqu'à la fin respectivement. Le terminal WSL est cependant désastreux en comparaison. Il ne supporte même pas ctrl-v pour coller ! !! Je dois utiliser le clic droit de la souris à chaque fois.

Je sais comment installer Powershell sur Linux, mais malgré cela, je dois toujours utiliser Powershell sous ce terminal. Existe-t-il un moyen d'utiliser le Powershell normal (sous Windows), mais pour mon Ubuntu 18.04 en WSL ?

2voto

NotTheDr01ds Points 5135

Vieille question qui a été remise sur le tapis aujourd'hui avec une autre réponse (qui est sur la bonne voie).

Réponse courte

Le plus grand malentendu avec la question elle-même est (comme @Biswapriyo l'a souligné dans les éditions et les commentaires) la confusion entre Shell y terminal .

Non, vous ne pouvez pas exécuter "WSL" dans un "terminal PowerShell" car ce dernier n'existe pas (voir ci-dessous).

Quelques Shell équivalents aux touches de raccourci, au moins :

Fonctionnalité

PowerShell

Bash/Zsh

Supprimer le jeton précédent

Ctrl + Backspace

Ctrl + W

Effacer au début de la ligne

Ctrl + Home

Ctrl + U

Supprimer jusqu'à la fin de la ligne

Ctrl + End

Ctrl + K

Explication

Lorsque vous exécutez WSL, vous exécutez une Shell . C'est bash par défaut, mais pourrait être zsh ou fish ou une myriade d'autres.

PowerShell est également un Shell .

Ces coquilles fonctionnent dans un terminal qui est la fenêtre qui vous présente le Shell. Par défaut dans Windows 10, tous s'exécutent par défaut dans l'ancienne "console Windows". Il semble que ce soit ce que vous exécutez (du moins au moment où vous avez posé la question).

D'autres terminaux pourraient inclure l'ISE de PowerShell (pratiquement remplacé par Visual Studio Code, d'après ce que j'ai compris), ou encore Terminal Windows (installable à partir du Windows Store). Il y en a pas mal d'autres aussi. Lorsque vous installez un autre terminal, PowerShell (en tant qu'un Shell ) peut s'exécuter dans ce terminal, tout comme votre WSL Shell, tout comme le CMD Shell.

Remarque : Windows Terminal est conçu pour remplacer Windows Console et devrait, à terme (dans Windows 11), pouvoir être défini comme la console par défaut.

Lorsque vous appuyez sur une touche ou un accord de touches (par ex. Ctrl + End ), cette clé passe :

  • Windows, qui vérifie d'abord s'il existe des gestionnaires pour cette fonction (par ex. Alt + F4 pour envoyer la commande "Quitter" à une application. Ou si vous avez installé quelque chose comme AutoHotkey, la touche sur laquelle vous appuyez peut être gérée. d'abord.

  • Ensuite, Windows le transmet au terminal . Le terminal peut choisir de s'en charger.

    Par exemple, Alt + Enter est géré par la console Windows, que votre Shell soit CMD, PowerShell, Bash en WSL, ou autre. Lorsque cette touche de raccourci est pressée, le terminal bascule entre un mode Windows normal et un mode plein écran.

    Il y a en fait très quelques frappes au clavier que la console Windows gère elle-même. La plupart passent à l'étape suivante. Toutefois, si vous sélectionnez le menu de l'application (cliquez sur l'icône en haut à gauche) et allez dans Propriétés, vous pouvez activer les fonctions suivantes Ctrl + C y Ctrl + V pour le copier/coller.

    Le terminal Windows est très différent et gère beaucoup plus de touches par défaut. En outre, vous pouvez les configurer presque toutes. Par exemple, par défaut, un Terminal Windows nouvellement installé fait lier Ctrl + V à coller.

    Mais Ctrl + Home , Ctrl + End そして Ctrl + Backspace n'ont rien à voir avec le terminal . C'est ce que @Biswapriyo essayait de vous faire comprendre dans les éditions et les commentaires.

  • Si elle n'est pas gérée par Windows ou le terminal, l'appui sur la touche arrive finalement au Shell lui-même.

    Comme la console Windows ne gère pas Ctrl + V le Shell le reçoit. CMD et PowerShell sont des applications Windows, et peuvent dialoguer directement avec le presse-papiers de Windows, de sorte qu'ils peuvent piéger l'information suivante Ctrl + V récupère le texte dans le presse-papiers et l'insère dans la ligne de commande.

    D'un autre côté, bash est une application Linux fonctionnant sous le noyau Linux. Elle ne sait pas comment parler au presse-papiers de Windows. C'est pourquoi elle s'appuie sur le terminal pour cela.

    Plus loin, Ctrl + V a une signification bien établie dans la plupart des shells Linux, et cet usage précède (je crois) même l'usage Windows. Voir cette question et la première réponse pour les détails.

    Pour les autres touches d'édition, comme @YorSubs l'a souligné dans cette réponse, il existe des équivalents. Et si quelque chose n'est pas lié par défaut dans votre Shell de choix, c'est presque toujours configurable.

1voto

postanote Points 3762

Les touches de raccourci que vous mentionnez ne sont pas propres au terminal PowerShell v6+. Vous pouvez le faire depuis que PowerShell existe. Même cmd.exe dispose de ces touches de raccourci clavier depuis des années.

Avez-vous regardé/envisagé d'utiliser/essayé le nouveau système de gestion de l'eau ? Terminal Windows pour votre cas d'utilisation ?

Ce que les gens veulent dire ici, c'est que WSL existe pour répondre aux besoins spécifiques de la ligne de commande interactive de Linux, et pas vraiment aux besoins spécifiques de PowerShell. Si MS ne fournit pas un moyen de faire ce que vous cherchez, alors vous devez vous tourner vers 3rdP.

Fichier de paramètres du terminal Windows - configurez-le comme vous le souhaitez, conformément à la documentation.

// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
    "$schema": "https://aka.ms/terminal-profiles-schema",

    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",

    "profiles":
    [
        {
            // Make changes here to the powershell.exe profile
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false
        },
        {
            // Make changes here to the cmd.exe profile
            "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "name": "cmd",
            "commandline": "cmd.exe",
            "hidden": false
        },
        {
            "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
            "hidden": false,
            "name": "Azure Cloud Shell",
            "source": "Windows.Terminal.Azure"
        }
    ],

    // Add custom color schemes to this array
    "schemes": [],

    // Add any keybinding overrides to this array.
    // To unbind a default keybinding, set the command to "unbound"
    "keybindings": []
}

Voir : Donnez du style à votre terminal Windows et utilisez WSL et PowerShell comme un pro Ce blog parle spécifiquement de la configuration d'Ubuntu avec elle.

Voir aussi, l'autre éditeur gratuit de Micorosft -

Se développer en WSL La télécommande Visual Studio Code - Extension WSL vous permet d'utiliser le sous-système Windows pour Linux (WSL) en tant que votre environnement de développement à plein temps, directement depuis VS Code. Vous pouvez développer dans un environnement basé sur Linux, utiliser des chaînes d'outils et des utilitaires spécifiques à Linux, et exécuter et déboguer vos applications basées sur Linux, le tout dans le confort de Windows. de Windows.

0voto

harrymc Points 394411

Une solution possible est d'utiliser PowerShell et d'intégrer les commandes Linux dans Windows comme s'il s'agissait d'applications natives.

La procédure n'est pas simple, et est documentée dans le blog de Microsoft
Intégrer les commandes Linux dans Windows avec PowerShell et le sous-système Windows pour Linux .

Le code source complet décrit dans l'article ainsi que de l'aide supplémentaire pour l'incorporer dans votre flux de travail sont disponibles à l'adresse suivante https://github.com/mikebattista/PowerShell-WSL-Interop .

-1voto

YorSubs Points 355

Les consoles WSL standard supportent toutes Ctrl-Shift-c (copie) et Ctrl-Shift-v pour coller (non activé par défaut, allez dans Propriétés et cochez l'option pour l'activer, et notez que cela fonctionne également dans les invites PowerShell et CMD). Vous pouvez également copier du texte en le sélectionnant puis en faisant un clic droit avec la souris). En outre, vous pouvez utiliser Ctrl-Shift-Enter pour basculer en mode plein écran, et vous disposez également de toute la puissance de l'application bash dans une console bash, donc par exemple :

Tab    Autocomplete commands
Ctrl + r   Search the history of commands used
Ctrl + a / e  Move to start / end of current line
Alt + f / b   Move to the next / previous word
Ctrl + u / k  Cut all text on the left / right side of the cursor
Ctrl + w   Cut the word on the left side of the cursor
Ctrl + d   Logout of Terminal or ssh (or tmux) session,   Ctrl + l   Clear Terminal

Hinweis Ctrl u / k . Notez également Alt-Left/Right (avec les touches de curseur) pour passer d'un mot à l'autre.

Il peut aussi être agréable d'apprendre quelques tmux avec ses excellents outils de manipulation des vitres :

C-b : (to enter command mode), then  :ls, :help, :set mouse on  (or other commands)
C-d  (Note: no C-b first!)  (Detach from a session, or C-b d or C-b D for interactive)
'M-' stands for 'Meta' key and is the Alt key on Linux
C-b ?  (list all key bindings)   C-z  (Suspend tmux)   C-q  (Unsuspend tmux)
tmux a (Attach last session)    tmux a -t mysession   (Attach to mysession)
tmux ls (list sessions),  tmux a (attach),   tmux a -t <name> (attach named session)
tmux  (start tmux),   tmux new -s <name>,   tmux new -s mysession -n mywindow
tmux kill-session –t <name>     (kill a session)   tmux kill-server  (kill tmux server)

***** Panes (press C-b first):
"  (Split new pane up/down)                  %  (Split new pane left/right)
z  (Toggle zoom of current pane)             x  (Kill current pane)
{ / }  (Swap current pane with previous pane / next pane)   t  (Show the time in pane)
q  (Display pane indexes)                    !  (Break current pane out of the window)
m  (Mark current pane, see :select-pane -m)  M  Clear marked pane
Up/Down/Left/Right    (Change pane in cursorkey direction, must let go of Ctrl)
C-Up/Down/Left/Right  (Resize the current pane in steps of 1 cell, must hold down Ctrl)
M-Left, M-Right  (Resize current pane in steps of 5 cells)
o  (Go to next pane in current window)       ;  (Move to the previously active pane)
C-o  (rotate panes in current window)       M-o  (Rotate panes backwards)
M-1 to M-5  (Arrange panes preset layouts: tiled, horizontal, vertical, main-hor, main-ver)

***** Windows (press C-b first):
c       (Create a new window)         ,  (Rename the current window)
0 to 9  (Select windows 0 to 9)       '  (Prompt for window index to select)
s / w   (Window preview)              .  (Prompt for an index to move the current window)
w       (Choose the current window interactively)     &  (Kill the current window)
n / p   (Change to next / previous window)      l  (Change to previously selected window)
i       (Quick window info in tray)

***** Sessions (press C-b first):
$  (Rename the current session)
( / )  (Switch 'attached' client to previous / next session)
L  Switch the attached client back to the last session.
f  Prompt to search for text in open windows.
r  Force redraw of the attached client.
s  (Select a new session for the attached client interactively)
~  Show previous messages from tmux, if any.
Page Up     Enter copy mode and scroll one page up.
Space       Arrange the current window in the next preset layout.
M-n         Move to the next window with a bell or activity marker.
M-p         Move to the previous window with a bell or activity marker.

***** Buffers (copy mode)
[  (Enter 'copy mode' to use PgUp/PgDn etc, press 'q' to leave copy mode)
]  (View history / Paste the most recent text buffer)
#  (List all paste buffers     =  (Choose a buffer to paste, from a list)
-  Delete the most recently copied buffer of text.
C-Up, C-Down
M-Up, M-Down
Key bindings may be changed with the bind-key and unbind-key commands.

En fait, vous avez beaucoup plus d'options dans WSL pour manipuler la console que dans PowerShell.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X