11Sep

Come eseguire programmi Windows dalla shell Bash di Windows 10

Nell'aggiornamento dei creativi, la shell Bash di Windows 10 ora consente di eseguire i binari di Windows e i comandi del prompt dei comandi standard direttamente da Bash. Puoi eseguire entrambi i programmi Linux e Windows dalla stessa shell di Bash o persino incorporare i comandi di Windows in uno script Bash.

Che cosa è necessario sapere

Ecco alcuni dettagli di base che è necessario conoscere su questa funzione: Account utente

  • : i programmi avviati dalla shell Bash verranno eseguiti come se fossero stati lanciati dall'account utente corrente di Windows. Autorizzazioni
  • : questi programmi avranno le stesse autorizzazioni del processo Bash.exe. Quindi, se vuoi che questi comandi abbiano accesso come amministratore, dovrai eseguire la shell Bash come amministratore. Directory di lavoro
  • : i programmi Windows condividono la stessa "directory di lavoro" della shell Bash. Quindi, se si esegue un comando che elenca i contenuti della directory corrente, verrà elencato il contenuto della directory di lavoro corrente nella shell Bash. Usa il comando cd per cambiare le directory di lavoro.

Tenendo questo a mente, diamo un'occhiata a come eseguire un programma.

Come eseguire un programma Windows

Per eseguire un programma Windows, immettere il percorso del file. exe del programma nella shell Bash. Ricorda che l'unità Windows C: è disponibile su /mnt/ c in Bash. Anche l'ambiente Bash è sensibile al maiuscolo / minuscolo, pertanto è necessario specificare la maiuscola corretta.

Supponiamo di volere avviare l'utilità Ping in C: \ Windows \ System32 \ PING.EXE.Avresti eseguito il seguente comando:

/mnt/c/Windows/System32/ PING.EXE

Il seguente comando non funzionava, perché Bash fa distinzione tra maiuscole e minuscole:

/mnt/c/windows/system32/ ping.exe

Questo è un po 'più complicato se il percorso contiene caratteri complessi come spazi e parentesi,come le cartelle Programmi. Devi "scappare" spazi, parentesi e altri caratteri complessi anteponendoli con un carattere "\".

Ad esempio, supponiamo di voler eseguire il programma Internet Explorer che si trova in C: \ Programmi( x86) \ Internet Explorer \ iexplore.exe. Dovresti eseguire il seguente comando in Bash: Programma

/mnt/c/ \ Files \ \( x86 \) / Internet \ Explorer / iexplore.exe

Notare "\" prima dei caratteri spazio e parentesi. Questi caratteri devono essere "scappati" o Bash non realizzerà che i caratteri fanno parte di un percorso di file.

Come passare un argomento a un comando

La shell Bash passa gli argomenti direttamente ai comandi eseguiti.

Ad esempio, se si desidera eseguire ping su example.com, eseguire:

/mnt/c/Windows/System32/ PING.EXE example.com

Oppure, se si desidera aprire il file hosts Windows in Blocco note, eseguire:

/mnt/c/Windows/System32/ notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts "

Si utilizza il percorso file standard di Windows quando si passa un percorso file direttamente a un programma Windows. Questo perché Bash passa direttamente l'argomento. Notepad.exe e altri programmi Windows si aspettano un percorso di file di Windows.

Come eseguire un comando incorporato

Alcuni comandi di Windows non sono file. exe, ma sono incorporati nel prompt dei comandi stesso. Ad esempio, questo include il comando dir che potresti normalmente eseguire in un prompt dei comandi. Per eseguire tale comando, è necessario eseguire il file binario cmd.exe associato al prompt dei comandi e passarlo come argomento con / C, in questo modo:

/mnt/c/Windows/System32/ cmd.exe / comando C

Ad esempio, per eseguire la dircomando incorporato nel prompt dei comandi, eseguire il seguente comando:

/mnt/c/Windows/System32/ cmd.exe / C dir

Come aggiungere directory al percorso

L'ambiente Windows Services per Linux tratta gli eseguibili di Windows in modo simile al modo in cui tratta i file binari di Linux. Ciò significa che è possibile aggiungere una directory contenente file. exe al percorso e quindi eseguire direttamente tali file. exe. Ad esempio, per aggiungere la directory System32 al percorso, eseguire:

export PATH = $ PATH: /mnt/c/Windows/ System32

Potresti quindi eseguire direttamente i file. exe di Windows che si trovano nella cartella System32, ad esempio:

PING.exe esempio.com notepad.exe cmd.exe / C dir

Come convogliare l'output di un comando su un altro

L'output di un comando Windows può essere reindirizzato a un comando Linux e viceversa. Ad esempio, è possibile utilizzare il comando ipconfig.exe -all per elencare i dettagli sulle interfacce di rete e collegarlo al comando grep di Linux per cercare l'output. Ad esempio, per elencare tutte le informazioni sulla tua connessione e cercare le sezioni che corrispondono a "Indirizzo IPv4", devi eseguire:

/mnt/c/Windows/System32/ ipconfig.exe -all |grep "Indirizzo IPv4"

Questa è la procedura di base. Questi comandi funzioneranno anche se incorporati in uno script Bash, quindi puoi scrivere uno script Bash che incorpori sia i comandi di Windows che le utilità di Linux. Se viene eseguito nella shell Bash, funzionerà in uno script Bash.

E, se si desidera passare dall'altra parte, è possibile utilizzare il comando "bash -c" per eseguire i comandi di Bash dal prompt dei comandi standard di Windows.

ARTICOLI CORRELATI
Come creare ed eseguire script Bash Shell su Windows 10
Come eseguire comandi Linux da Bash Shell su Windows 10