WSL の Ubuntu で tree コマンドを使ってみました

以前、Macでtreeコマンドを使うの記事を書いたことがありました。 今回は、 WSL の Ubuntu で tree コマンドを使ってみました。

環境

  • Ubuntu 16.04

Windows の tree コマンド

tree コマンドは Windows にもあって、 C:\Windows\System32\tree.com がそれのようです。 拡張子は、 .exe ではなくて、 .com のようでした。

PS C:\Users\user\Pictures> tree
フォルダー パスの一覧:  ボリューム Local Disk
ボリューム シリアル番号は 620B-xxxx です
C:.
├─Camera Roll
└─Saved Pictures

フォルダーの構造を表示してくれます。

WSL の Ubuntu からも Windows のコマンドが呼び出せるようで、 /mnt/c/Windows/System32/tree.com のコマンドを実行してみました。 パスが通っているようで、 tree.com でも実行はできるみたいです。

$ /mnt/c/Windows/System32/tree.com ./
Folder PATH listing for volume Local Disk
Volume serial number is 0000xxxx 620B:xxxx
C:\WINDOWS\SYSTEM32\
Invalid path - \WINDOWS\SYSTEM32\
No subfolders exist

カレントディレクトリーが変わってしまうようでした。

それから、今回、 Ubuntu 側のディレクトリーを扱いたかったのですが、 Windows のアプリから Ubuntu 側のディレクトリーを扱うのはよくないそうなので、おとなしく Ubuntu の tree を使おうと思いました。

install

Ubuntu の tree をインストールします。 リポジトリーに tree コマンドのパッケージがあるみたいなので、 apt install でインストールしてみます。

$ sudo apt install tree
[sudo] password for user:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  tree
0 upgraded, 1 newly installed, 0 to remove and 67 not upgraded.
Need to get 40.6 kB of archives.
After this operation, 138 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tree amd64 1.7.0-3 [40.6 kB]
Fetched 40.6 kB in 2s (14.9 kB/s)
Selecting previously unselected package tree.
(Reading database ... 26614 files and directories currently installed.)
Preparing to unpack .../tree_1.7.0-3_amd64.deb ...
Unpacking tree (1.7.0-3) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up tree (1.7.0-3) ...

インストールできたみたいです。

tree コマンド

tree コマンドを使ってみます。

$ tree
.
├── css
│   └── style.css
├── img
│   ├── apple-touch-icon.png
│   ├── favicon.png
│   └── logo.png
└── js
    └── script.js

3 directories, 5 files

Ubuntu の tree コマンドが使えているようです。

アンインストール

Remove a Package: Removal of a package (or packages) is also straightforward. To remove the package installed in the previous example, type the following:

sudo apt remove nmap

Apt

アンインストールをあまりすることがなくて忘れてしまうのですが、 apt remove でアンインストールできるようです。

$ sudo apt remove tree

終わり

Windows で Linux が使えるといっても、制約があることがやっぱり面倒で、 macOS を使った方がいいとも思うところでした。

参考

26 April 2018 追記

もう少し WSL の Ubuntu から Windows の tree コマンドを使う方法を確認してみました。

$ /mnt/c/Windows/System32/tree.com ./
Folder PATH listing for volume Local Disk
Volume serial number is 0000xxxx 620B:xxxx
C:\WINDOWS\SYSTEM32\
Invalid path - \WINDOWS\SYSTEM32\
No subfolders exist

この記事の最初に Windows の tree コマンドを実行したときの、このエラー。 C:\WINDOWS\SYSTEM32\ のパスが渡されているにも関わらず、 Invalid path として \WINDOWS\SYSTEM32\ というパスを出力しています。 : (コロン)がうまく渡せていないのかな、と思いました。

$ tree.com C:\Users\user\Pictures
Folder PATH listing for volume Local Disk
Volume serial number is 0000xxxx 620B:xxxx
C:\WINDOWS\SYSTEM32\USERSUSERPICTURES
Invalid path - \WINDOWS\SYSTEM32\USERSUSERPICTURES
No subfolders exist

別のフォルダーのパスを渡しても Invalid path - \WINDOWS\SYSTEM32\USERSUSERPICTURES のエラーになりました。 C: が消えてしまっています。 それから、 C:\WINDOWS\SYSTEM32\ が基準のフォルダーになってしまっていて、その下に USERS フォルダーがあるように認識されてしまっています。 USERS フォルダー以降の \ マークもなくなってしまっています。

$ tree.com "C:\Users\user\Pictures"
Folder PATH listing for volume Local Disk
Volume serial number is 0000xxxx 620B:xxxx
C:\USERS\USER\PICTURES

ダブルクォーテーションでパスを囲んでみました。 すると、エラーはなくなりました。

でも、 Windows からは見えていた Camera Roll と Saved Pictures は出力されませんでした。 空のディレクトリーであるかのように見えてしまっています。

特殊なフォルダーなのかな、と思って、普通のフォルダーを作ってみました。 そして、まず Windows の tree コマンドで確認してみました。

PS C:\Users\user\Pictures> tree
フォルダー パスの一覧:  ボリューム Local Disk
ボリューム シリアル番号は 620B-xxxx です
C:.
├─Camera Roll
├─fol1
│  ├─fol11
│  └─fol12
└─Saved Pictures

fol1 と、その下に fol11 と fol12 を作成しました。

そして、 Ubuntu から Windows の tree コマンドで確認してみました。

$ tree.com "C:\Users\user\Pictures"
Folder PATH listing for volume Local Disk
Volume serial number is 0000xxxx 620B:xxxx
C:\USERS\USER\PICTURES
   fol11
   fol12

なぜか Pictures の下に fol11 と fol12 があるかのような出力になってしまっています。

おとなしく Ubuntu の tree コマンドを使おうと思います。