Ho postato di recente su Qual è la differenza tra una console, un terminale e una shell? Il mondo di Windows è interessante, e un po' strano e sconosciuto per le persone non Windows. Potresti usare Ubuntu o Mac e hai scelto la tua shell come zsh o bash o pwsh, ma poi arrivi su Windows e stiamo saltando tra le shell (e ora i sistemi operativi con WSL!) Scheda per scheda.
Se stai utilizzando una shell di Windows come PowerShell perché ti piace il suo motore basato su .NET Core e il potente linguaggio di scripting, potresti comunque perdere i comuni comandi della shell *nix come ls, grep, sed e altri.
Non importa quale shell stai usando in Windows (powershell, yori, cmd, qualunque cosa) puoi sempre chiamare la tua istanza Ubuntu predefinita con "wsl command" quindi "wsl ls" o "wsl grep" ma sarebbe bello renderli più naturalmente e comodamente integrati.
Ora è disponibile una nuova serie di "wrapper di funzioni" che rendono i comandi Linux disponibili direttamente in PowerShell in modo da poter passare facilmente tra più ambienti.
Potrebbe sembrare strano, ma ci consente di creare fantastici comandi in pipe che si muovono dentro e fuori Windows e Linux, PowerShell e bash. In realtà è piuttosto sorprendente e molto naturale se tu, come me, non sei confessionale nella scelta del sistema operativo e della shell preferita.
Questi wrapper di funzioni sono progettati in modo molto accurato ed espongono persino il completamento TAB su tutti i sistemi operativi! Ciò significa che posso digitare comandi Linux in PowerShell e arriva il completamento di TAB!
È super facile da configurare. Dal Github di Mike Battista
- Installa PowerShell Core
- Installa il sottosistema Windows per Linux (WSL)
- Installa il modulo WslInterop con
Install-Module WslInterop
- Importa comandi con
Import-WslCommand
dal tuo profilo per l'accesso persistente o su richiesta quando hai bisogno di un comando (ad es.Import-WslCommand "awk", "emacs", "grep", "head", "less", "ls", "man", "sed", "seq", "ssh", "tail", "vim"
)
Farai il tuo modulo di installazione solo uno, quindi esegui il blocco note $profile e aggiungi solo un'ultima riga. Assicurati di cambiarlo per esporre i comandi WSL/Linux che desideri. Una volta che hai finito, puoi semplicemente aprire PowerShell Core e combinare e abbinare i tuoi comandi!
Dal blog, "Con questi wrapper di funzioni in atto, ora possiamo chiamare i nostri comandi Linux preferiti in un modo più naturale senza doverli prefissare con wsl
oppure preoccupati di come i percorsi di Windows vengono tradotti in percorsi WSL:"
man bash
less -i $profile.CurrentUserAllHosts
ls -Al C:\Windows\ | less
grep -Ein error *.log
tail -f *.log
È davvero una cosa geniale e complimenti a Mike per averlo condiviso con noi! Vai a provarlo ora. https://github.com/mikebattista/PowerShell-WSL-Interop
Sponsor: Come C#? Anche noi! Ecco perché abbiamo sviluppato un IDE .NET veloce, intelligente e multipiattaforma che ti offre ancora più potenza di codifica. Analisi del codice intelligente, completamento del codice completo, ricerca e navigazione istantanea, un debugger avanzato... Con JetBrains Rider, tutto ciò di cui hai bisogno è a portata di mano. Codifica C# alla velocità del pensiero su Linux, Mac o Windows. Prova JetBrains Rider oggi!