会社の後輩のブログを見ていたら、面白そうなツールの紹介をしていたので試してみました。
tree コマンドをHomebrewでDLして使ってみた
treeコマンドとは?
treeコマンドは、ディレクトリ構造を可視化するコマンドです。
The Tree Command for Linux Homepage
lsコマンドは、カレントディレクトリのファイルのみを表示しますが、treeコマンドは、カレントディレクトリ以下の階層を探索しながら表示してくれます。
試しに「設定ファイル分割や、コマンド補完が使える拡張sshコマンドを公開しました。」で紹介したsshxのソースコードでtreeコマンドを実行してみます。
$ tree
.
├── LICENSE
├── README.md
├── bin
│ └── sshx
├── lib
│ ├── sshx
│ │ ├── cli.rb
│ │ └── version.rb
│ └── sshx.rb
├── sshx-0.0.0.gem
├── sshx-0.1.0.gem
├── sshx-0.1.1.gem
├── sshx-0.2.0.gem
└── sshx.gemspec
3 directories, 11 files
プロジェクトのファイル構造などを理解するのに、これは役立ちます!
Homebrewからインストール
treeコマンドは、Homebrewからインストールできます。
brew install tree
これで完了です。
$ tree --version
tree v1.6.0 (c) 1996 - 2011 by Steve Baker, Thomas Moore, Francesc Rocher, Kyosuke Tokoro
今まで知りませんでしたが、結構歴史があるんですね・・・。
オプションを使いこなす!
treeコマンドはディレクトリ構造を再帰的に読むので、ファイル数が多い場合は出力が巨大になってしまいます。
実際に使おうと思うと、オプションを使いこなして、いらない部分を出力しないようにした方がよい場合が多いです。
そこで、簡単に覚えられそうで、便利そうなtreeコマンドのオプションをいくつか紹介しておきます。
指定階層までを表示する。
まず、-Lオプションで、表示する階層の深さを指定することができます。
$ tree -L 1
.
├── LICENSE
├── README.md
├── bin
├── lib
├── sshx-0.0.0.gem
├── sshx-0.1.0.gem
├── sshx-0.1.1.gem
├── sshx-0.2.0.gem
└── sshx.gemspec
2 directories, 7 files
1階層だとlsコマンドとほぼ同じですが、2階層下までとか使い分けられます。
ファイル名で絞り込んで表示する。
-Pオプションで、ファイル名による絞り込みができます。
$ tree -P '*.rb'
.
├── bin
└── lib
├── sshx
│ ├── cli.rb
│ └── version.rb
└── sshx.rb
3 directories, 3 files
「Rubyのソースコード以外はいらない」というような状況は多いので、これは便利です。
ディレクトリのみを表示する。
-dオプションを使うと、ディレクトリのみを表示できます。
$ tree -d
.
├── bin
└── lib
└── sshx
3 directories
実際のファイルには興味がなくて、プロジェクトのディレクトリ構造だけが知りたい時に使えます。
treeコマンドは毎日使うという感じではないですが、ときどきディレクトリ構造を一気に見たくなるときがあるので、そんな時に使えそうです。