11Sep
W aktualizacji Creators, powłoka Bash systemu Windows 10 pozwala teraz na uruchamianie plików binarnych systemu Windows i standardowych poleceń Command Prompt bezpośrednio z Bash. Możesz uruchamiać zarówno programy Linux, jak i Windows z tej samej powłoki Bash, lub nawet włączać polecenia Windows do skryptu Bash.
Co musisz wiedzieć
Oto kilka podstawowych informacji, które musisz wiedzieć o tej funkcji:
- Konto użytkownika : Programy uruchomione z powłoki Bash będą działać tak, jakby zostały uruchomione przez bieżące konto użytkownika Windows.
- Uprawnienia : Te programy będą miały te same uprawnienia co proces Bash.exe. Tak więc, jeśli chcesz, aby te polecenia miały dostęp administratora, musisz uruchomić powłokę Bash jako Administrator. Katalog roboczy
- : Programy systemu Windows korzystają z tego samego "katalogu roboczego" co skorupa Bash. Tak więc, jeśli uruchomisz polecenie wyświetlające zawartość bieżącego katalogu, wyświetli on zawartość bieżącego katalogu roboczego w powłoce Bash. Użyj polecenia cd, aby zmienić katalogi robocze.
Mając to na uwadze, przyjrzyjmy się, jak uruchomić program.
Jak uruchomić program Windows
Aby uruchomić program systemu Windows, wprowadź ścieżkę do pliku. exe programu w powłoce Bash. Pamiętaj, że twój dysk Windows C: jest dostępny w /mnt/ c w Bash. W środowisku Bash uwzględniana jest również wielkość liter, dlatego należy podać poprawną wielkość liter.
Załóżmy, że chcesz uruchomić narzędzie Ping znajdujące się w C: \ Windows \ System32 \ PING.EXE.Uruchomiłbyś następującą komendę:
/mnt/c/Windows/System32/ PING.EXENastępujące polecenie nie działałoby, ponieważ w Bash jest rozróżniana wielkość liter:
/mnt/c/windows/system32/ ping.exeJest to nieco bardziej skomplikowane, jeśli ścieżka zawiera złożone znaki, takie jak spacje i nawiasy,podobnie jak foldery Program Files. Musisz "uciec" ze spacjami, nawiasami i innymi złożonymi znakami, poprzedzając je znakiem "\".
Załóżmy na przykład, że chcesz uruchomić program Internet Explorer znajdujący się w C: \ Program Files( x86) \ Internet Explorer \ iexplore.exe. Będziesz musiał uruchomić następujące polecenie w Bash:
/mnt/c/ Program \ Files \ \( x86 \) / Internet \ Explorer / iexplore.exeZauważ "\" przed znakami spacji i nawiasu. Te znaki muszą być "uniknięte" lub Bash nie zda sobie sprawy, że znaki są częścią ścieżki do pliku.
Jak przekazać argument do polecenia
Powłoka Bash przekazuje argumenty bezpośrednio do poleceń, które wykonujesz.
Na przykład, jeśli chciałeś pingować example.com, uruchomiłbyś:
/mnt/c/Windows/System32/ PING.EXE example.comLub, jeśli chciałbyś otworzyć plik hosts Windows w Notatniku, uruchomiłbyś:
/mnt/c/Windows/System32/ notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts "Podczas przesyłania ścieżki do pliku bezpośrednio do programu Windows używa się standardowej ścieżki do pliku systemu Windows. To dlatego, że Bash przekazuje argument bezpośrednio. Notepad.exe i inne programy systemu Windows oczekują ścieżki do pliku systemu Windows.
Jak uruchomić wbudowane polecenie
Niektóre polecenia systemu Windows nie są plikami. exe, ale są wbudowane w wiersz polecenia. Na przykład obejmuje to polecenie dir, które normalnie można uruchomić w wierszu polecenia. Aby uruchomić takie polecenie, musisz uruchomić plik binarny cmd.exe skojarzony z Command Prompt i przekazać go jako argument z / C, jak na przykład:
/mnt/c/Windows/System32/ polecenie cmd.exe / CNa przykład, aby uruchomić katalogpolecenie wbudowane w wiersz polecenia, uruchomisz następującą komendę:
/mnt/c/Windows/System32/ cmd.exe / C dirJak dodać katalogi do ścieżki
Środowisko Windows Services dla Linux traktuje pliki wykonywalne Windows podobne do tego, w jaki traktuje pliki binarne Linuxa. Oznacza to, że możesz dodać katalog zawierający pliki. exe do ścieżki, a następnie bezpośrednio wykonać te pliki. exe. Na przykład, aby dodać katalog System32 do swojej ścieżki, należy uruchomić:
export PATH = $ PATH: /mnt/c/Windows/ System32Można wtedy uruchomić pliki. exe systemu Windows znajdujące się w folderze System32 bezpośrednio, tak jak to: Przykład
PING.exe.com notepad.exe cmd.exe / C dirJak wyprowadzić wyjście jednego polecenia do innego
Dane wyjściowe polecenia systemu Windows można przekierować do polecenia systemu Linux i na odwrót. Na przykład można użyć polecenia ipconfig.exe -all, aby wyświetlić szczegółowe informacje o interfejsach sieciowych i połączyć je z komendą Linux grep w celu wyszukania danych wyjściowych. Na przykład, aby wyświetlić wszystkie informacje o połączeniu i wyszukać sekcje pasujące do "adresu IPv4", należy uruchomić:
/mnt/c/Windows/System32/ ipconfig.exe -all |grep "Adres IPv4"To jest podstawowy proces. Polecenia te będą działać także po włączeniu do skryptu Bash, więc możesz napisać skrypt Bash zawierający zarówno polecenia Windows, jak i narzędzia Linux. Jeśli działa w powłoce Bash, będzie działać w skrypcie Bash.
A jeśli chcesz przejść w drugą stronę, możesz użyć polecenia "bash -c", aby uruchamiać polecenia Bash ze standardowego wiersza poleceń systemu Windows.