treeコマンドでフォルダ構成をツリー表示しつつ所有者・パーミッションを表示

Bash,Linux

はじめに

Linuxにおける tree コマンドは、フォルダ構成を視覚的に確認するために便利なコマンドです。
僕は特にドキュメントの作成時に tree コマンドを利用しフォルダ構成を図示します。

特定のアプリケーションのセットアップドキュメントを作成する際に、
ツリー構造を表示しつつ想定するパーミッションを表示したい場合がありました。

tree コマンドのオプションを付与することでかんたんに実現できました。

検証環境

$ uname -moi
x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

$ tree --version
tree v1.6.0 (c) 1996 - 2011 by Steve Baker, Thomas Moore, Francesc Rocher, Kyosuke Tokoro

かんたんなフォルダ構成を作成

tree コマンドの動作を見るためにかんたんなフォルダ構成を用意します。

# 適当にディレクトリを作成
$ mkdir -p aaa bbb ccc/ddd

# 適当にファイルも配置
$ touch aaa/1.txt bbb/2.txt ccc/ddd/3.txt

結果、以下のようなファイルツリーが作成されました。

$ tree
.
|-- aaa
|   `-- 1.txt
|-- bbb
|   `-- 2.txt
`-- ccc
    `-- ddd
        `-- 3.txt

4 directories, 3 files

# `ls` コマンドで所有者、パーミッションを確認してみる
$ find . | xargs ls -ld
drwxrwxr-x 5 root root 160 Apr  7 13:39 .
drwxr-xr-x 3 root root  96 Apr  7 13:40 ./aaa
-rw-r--r-- 1 root root   0 Apr  7 13:40 ./aaa/1.txt
drwxr-xr-x 3 root root  96 Apr  7 13:40 ./bbb
-rw-r--r-- 1 root root   0 Apr  7 13:40 ./bbb/2.txt
drwxr-xr-x 3 root root  96 Apr  7 13:39 ./ccc
drwxr-xr-x 3 root root  96 Apr  7 13:40 ./ccc/ddd
-rw-r--r-- 1 root root   0 Apr  7 13:40 ./ccc/ddd/3.txt

tree コマンドの -u オプション

tree -u コマンドを利用することで、構造とともに 所有者 を表示させることができます。

$ tree -u
.
|-- [root    ]  aaa
|   `-- [root    ]  1.txt
|-- [root    ]  bbb
|   `-- [root    ]  2.txt
`-- [root    ]  ccc
    `-- [root    ]  ddd
        `-- [root    ]  3.txt

4 directories, 3 files

tree コマンドの -p オプション

tree -p コマンドを利用することで、構造とともに パーミッション を表示させることができます。

$ tree -p
.
|-- [drwxr-xr-x]  aaa
|   `-- [-rw-r--r--]  1.txt
|-- [drwxr-xr-x]  bbb
|   `-- [-rw-r--r--]  2.txt
`-- [drwxr-xr-x]  ccc
    `-- [drwxr-xr-x]  ddd
        `-- [-rw-r--r--]  3.txt

-u オプションと -p オプションを同時に利用する

-u オプションと -p オプションは同時に利用することができます。

$ tree -up
.
|-- [drwxr-xr-x root    ]  aaa
|   `-- [-rw-r--r-- root    ]  1.txt
|-- [drwxr-xr-x root    ]  bbb
|   `-- [-rw-r--r-- root    ]  2.txt
`-- [drwxr-xr-x root    ]  ccc
    `-- [drwxr-xr-x root    ]  ddd
        `-- [-rw-r--r-- root    ]  3.txt

ls -l で確認できるような情報は tree でも表示できる

他にも ls -l で確認できるような情報を出力できます。

# サイズを表示
$ tree -s
.
|-- [  96]  aaa
|   `-- [   0]  1.txt
|-- [  96]  bbb
|   `-- [   0]  2.txt
`-- [  96]  ccc
    `-- [  96]  ddd
        `-- [   0]  3.txt

4 directories, 3 files

# グループを表示
$ tree -g
.
|-- [root    ]  aaa
|   `-- [root    ]  1.txt
|-- [root    ]  bbb
|   `-- [root    ]  2.txt
`-- [root    ]  ccc
    `-- [root    ]  ddd
        `-- [root    ]  3.txt

4 directories, 3 files

# 作成日を表示
$ tree -D
.
|-- [Apr  7 13:40]  aaa
|   `-- [Apr  7 13:40]  1.txt
|-- [Apr  7 13:40]  bbb
|   `-- [Apr  7 13:40]  2.txt
`-- [Apr  7 13:39]  ccc
    `-- [Apr  7 13:40]  ddd
        `-- [Apr  7 13:40]  3.txt

ひとこと

見やすいわけでもないので、表示するとしたらパーミッションぐらいかな?と思います。
今回利用したのもパーミッションでした。

Bash,Linux