これまで色んな技術者みてきて「なんでそれだけ知ってんの」率が異様に高い、tree コマンド。
なんかの陰謀だろうか、この負の連鎖:
- Windows だ
- CUIなので
- DOSねば
- あ、親切なDOSるサイトめっけ
- はぅあ、tree.com ってすてき
てな感じ? そしてどういうわけだか最近の linux にはこのもどきが標準で入っていたりする。
あれね、Unix 育ちには、この「treeコマンド」、ちっとも便利と思わないのね。
こうすりゃいい:
1 me@host: ~$ find . | sed 's@[^/]*/@\t@g'
treeの方が出力が素敵じゃないか! いや…。tree コマンドを使いたい動機ってのがな、「excel でファイル一覧を作りたい」とかなんだろ、過半数以上は。tree コマンドは再利用しにくい。上の find を使うヤツはタブ区切りなので、リダイレクトして拡張子 tsv にして Excel にそのまま喰わせてやれば、すぐに好きな加工を開始出来る。tree の出力では先に馬鹿みたいな加工作業をする必要があるのだが、ここでも「わぉ、秀丸ステキ!」「さっすが桜エディタ!」という負の連鎖が続くわけである(これは実話)。
ところで、まず linux の tree コマンドだけれど、これは COPYRIGHT 表記から察するに、どうやら 1996年開始っぽい。が、DOS への言及はなく、自然発生的に同じものが出来たのかもしれない。DOS の tree.com の歴史は驚くほど古くて、今調べてみたら、DOS 2.0 のリリースの際に IBM が追加したものらしい。これは 1983 年のこと。だから linux の tree なんか後発も後発で…だと思うのだが、とにかく歴史に関する記述がことごとくないのだ、http://mama.indstate.edu/users/ice/tree/ には。だから良くわからない。(日付の一切入ってない ChangeLog なんか初めてみた。意味がわからない。)
例によってアレな。「treeって便利ですよね、でも標準じゃないのでfindで…」みたいなネタ書く人、多過ぎ。便利なのは find や du であって、tree じゃないんでわ。treeはあたしにゃ極めて不便なツールじゃ。
2022-06-24追記:
ここ最近のマイブームは Docker なのだけど、ひとさまの Dockerfile をちらほら眺めてたらさ、tree を「プリインストール」しやがるコンテナを書いてる人がおった。「tree を使えるコンテナ」が目的ではないよ、まったく tree そのものとは無関係なやつ。
ワタシ自身もコンテナを作って公開してるけれど、確かにね、本題ではないコマンドを入れたい誘惑には駆られる。ワタシの場合は less と emacs-nox を入れとくと便利だよなぁ、と毎度思うことは思うの。これの中で「コンテナにログイン」する話を書いてるでしょ、その際にあるとちょっと嬉しいわけ。だから tree を入れたい人の気持ちはわかるけれど、だからこそ「なんでよりによって tree か」てこと。(どのコンテナかもうわからないので朧げな記憶で書くけど、確かそういう「オマケ」は tree だけだったの、そのコンテナ。つまりその人にとって tree だけが重大で重要で「ステキ」だった、てことね。ほんとわからん…。)
docker コンテナって、何か特定のコマンドやサービスデーモンを提供するための「一式」を詰め込むわけだけれど、逆にいえば「その目的とは関係ないもの」をある程度削らないと、イメージが巨大になってしまうので、だからインストールするものを「ミニマルに」しがちなのね。デスクトップ linux ならあって当たり前のコマンドは、かなり入ってない(入れない)ことが多いので、なんなら find すら入れないことも出来る。そして tree を選ぶ。のかな? うん、よーわからん。正直そういうので真っ先に入れたいのは less だわ、ワタシにとっては。more しか入ってないのが存外ツライ。