Homepage » come » Come eseguire programmi Windows dalla shell Bash di Windows 10

    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 sia programmi Linux che Windows dalla stessa shell di Bash, o persino incorporare comandi di Windows in uno script Bash.

    Cosa hai bisogno di sapere

    Ecco alcuni dettagli di base che devi conoscere su questa funzione:

    • Account utente: I programmi lanciati dalla shell Bash verranno eseguiti come se fossero lanciati dall'attuale account utente di Windows.
    • permessi: 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. Utilizzare il CD comando per cambiare le directory di lavoro.

    Con questo in 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 in / mnt / c in Bash. Anche l'ambiente Bash è sensibile al maiuscolo / minuscolo, pertanto è necessario specificare la maiuscola corretta.

    Diciamo che volevi lanciare l'utilità Ping che si trova in C: \ Windows \ System32 \ PING.EXE. Dovresti eseguire il seguente comando:

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

    Il seguente comando non funzionerebbe, perché Bash è case-sensitive:

    /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 situato in C: \ Programmi (x86) \ Internet Explorer \ iexplore.exe. Dovresti eseguire il seguente comando in Bash:

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

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

    Come passare un argomento a un comando

    La shell Bash passa gli argomenti direttamente ai comandi che esegui.

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

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

    Oppure, se volessi aprire il file degli host di Windows nel Blocco note, eseguiresti:

    /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 dir comando normalmente eseguito in un prompt dei comandi. Per eseguire un comando di questo tipo, è necessario eseguire il comando cmd.exe binario associato al prompt dei comandi e passare il comando come argomento con / C, in questo modo:

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

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

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

    Come aggiungere le directory al percorso

    L'ambiente Windows Services per Linux tratta gli eseguibili di Windows in modo simile al modo in cui tratta i 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 tuo percorso, devi eseguire:

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

    È quindi possibile eseguire direttamente i file .exe di Windows che si trovano nella cartella System32, in questo modo:

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

    Come convogliare l'output di un comando ad un altro

    L'output di un comando di Windows può essere inviato a un comando Linux e viceversa. Ad esempio, puoi usare il ipconfig.exe -all comando per elencare i dettagli sulle interfacce di rete e collegarlo a Linux grep comando per cercare l'output. Ad esempio, per elencare tutte le informazioni sulla tua connessione e cercare le sezioni corrispondenti 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 vuoi andare dall'altra parte, puoi usare il comando "bash -c" per eseguire i comandi di Bash dal prompt dei comandi standard di Windows.