web-dev-qa-db-ja.com

WSLシェルの現在の作業ディレクトリからWindowsエクスプローラーを開く方法

Windowsエクスプローラーのアドレスバーに「bash」と入力してEnterキーを押すと、そのディレクトリにシェルが開きます。シェルを介してアクセスした作業ディレクトリ内のWindowsプログラムでファイルを操作したいと思うことがよくあります。シェルを介して到達した場所からエクスプローラーを開く簡単な方法はありますか?

27
wesalius

現在のディレクトリをエクスプローラーで開く-次を使用します(WSLはWindowsパスを単独で設定します)。

Explorer.exe .

set alias with .bashrcカスタムコマンドの場合:

echo 'alias Explorer="Explorer.exe ."' >> ~/.bashrc
source ~/.bashrc

今すぐ使用してください:

Explorer 

windowsエクスプローラで現在の作業ディレクトリを開きます。

27
Sole Sensei

Microsoftは、まさにこの目的のためにバイナリwslpathを提供しています。

Explorer.exe `wslpath -w "$PWD"`

Githubの問題 からの使用情報を要求するクリビングには、4つのオプションがあります--a-u-wおよび-m

wslpath usage:
    -a    force result to absolute path format
    -u    translate from a Windows path to a WSL path (default)
    -w    translate from a WSL path to a Windows path
    -m    translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

    EX: wslpath ‘c:\users’
13
laverya

WSLシェルプロンプトから、次を実行します。

Explorer.exe "Windows path"

といった

Explorer.exe L:

L:が目的のディレクトリにマップされている場合(これには未使用のドライブ文字を使用できます)。エクスプローラー内のネットワークドライブ、または [〜#〜] subst [〜#〜] を使用してローカルフォルダーにマップできます。

問題は、WSLの/ home/USERNAME /フォルダーがWindowsにC:\ Users\YOURUSERNAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\testerのように表示されることです。 SUBSTを使用して、これをドライブ文字a SUBST L: C:\Users\YOURUSERNAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\testerに変換してから、宛先にL:からの相対パスを使用できます。

WSLフォルダ/home/YOURUSERNAME/acme/noveltiesがあるとします。 Explorer.exe L:を使用すると近づくことができますが、Explorer.exe L:acmeまたはExplorer.exe acme\noveltiesを使用しても目的の場所には移動せず、代わりにWindowsユーザーのドキュメントフォルダーに移動します。

3
K7AAY

エクスプローラを簡単に開くためのeopenという小さなツールを作成しました。 https://github.com/ko1nksm/eopen

Usage: eopen [options] [file | directory | uri]

options:
  -e, --editor      Open the file in text editor ($EOPEN_EDITOR)
  -n, --new         Open the specified directory in new instance of Explorer
      --Sudo        Use Sudo to write the unowned file
  -v, --version     Display the version
  -h, --help        You're looking at it

note:
  The file or the directory allows linux and windows path.
  (e.g. /etc/hosts, C:/Windows/System32/drivers/etc/hosts)

  The uri must start with protocol schema. (e.g http:, https:)

そしてここに別のソリューションがあります。 https://github.com/4U6U57/wsl-open

2

WSL2の場合、次のようなウィンドウからホームディレクトリにアクセスできます。

\\wsl$

パーティーに遅れてすみません!

2
Francisco Tena

上記の@ sole-senseiと@laveryaからの部分的な回答を最大限に活用して、次のエイリアスを〜/ .bash_aliasesに追加します(または、何らかの理由で別のエイリアスファイルが不要/~/.bashrcでない場合) :

 alias Explorer='Explorer.exe `wslpath -w "$PWD"`'

最後にタグを付けることを気にしない場合(私はそれをきれいに整理しておくのが好きなので私はしません):

 echo 'alias Explorer="Explorer.exe ."' >> ~/.bash_aliases
 source ~/.bash_aliases

新しいWindowsターミナルをサポートするだけで ctrl-C そして ctrl-V (右クリック?!本当にマイクロソフト?!?)本当に準備は整っています!

1
Ted

私はcmd.exe /c start .すると、現在のディレクトリでファイルエクスプローラーが開いているはずです。

damo@laptop:/mnt/c/Windows/System32$ pwd
/mnt/c/Windows/System32    
damo@laptop:/mnt/c/Windows/System32$ cmd.exe /c start .
  <opens file Explorer in c:\Windows\System32>
damo@laptop:/mnt/c/Windows/System32$ cd ~
damo@laptop:~$ pwd
/home/damo
damo@laptop:~$ cmd.exe /c start .
  <opens file Explorer in c:\Windows\System32>
damo@laptop:~$ cd /mnt/c/stuff
damo@laptop:~$ cmd.exe /c start .
  <opens file Explorer in c:\stuff>

次のように設定して、エイリアスを作成しますalias start='cmd.exe /c startこれにより、単純にstart .任意のディレクトリから。

0
Damo

これは私のバージョンのコードです

Explorer() {
    pwd -P | xargs wslpath -w | sed "s~C:\\\Users\\\User\\\Desktop~d:~" | xargs -0 Explorer.exe
}

Windowsではsubstドライブを使用しています。 sedの部分がこれを変換します。この機能を使用しない場合は、除外できます。

注:symlinkドライブまたはsubstドライブをカバーしていないため、すでに多数ありますが、この回答を投稿しました。

0
VarunAgw