web-dev-qa-db-ja.com

osxbashのtreeコマンド

screen cast on a Ruby gem called pry 。8:10に、.treeコマンドが使用されます。 Unixコマンドだと思います。

私のシステムでは動作していないようです:

[24] pry(main)> .tree
\Error: there was a problem executing system command: tree

そして私は問題を ここ まで追跡しました、そこではpryはシェルコマンドを参照します:

Pry::CommandSet.new do

  command(/\.(.*)/, "All text following a '.' is forwarded to the Shell.", :listing => ".<Shell command>") do |cmd|
    if cmd =~ /^cd\s+(.+)/i
      dest = $1
      begin
        Dir.chdir File.expand_path(dest)
      rescue Errno::ENOENT
        output.puts "No such directory: #{dest}"
      end

    else
      if !system(cmd)
        output.puts "Error: there was a problem executing system command: #{cmd}"
      end
    end
  end

bashのコンテキストから、運が悪かったコマンドツリーを使用してみました。

projects/sms(apps2)$ tree
-bash: tree: command not found
~/projects/sms(apps2)$ .tree
-bash: .tree: command not found

これは非常に便利に見えますが、どうすればこのコマンドを取得できますか?

30
JZ.

使用 自作

brew install tree

使用 macports

Sudo port install tree

使用 ソース

これらの指示に従ってください。 (警告;意味のあるフラグなどを使用する必要があります。)

<rant>すべてのシステムにはtreeが付属している必要があります。よく使います。また、ディレクトリ構造を写真ではなくテキストとして投稿できます。</ rant>

60
Dave Newton

簡単な方法として、次のエイリアスを~/.bashrcまたは~/.zshrcファイルに追加することもできます。

alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"

これにより、次のようになります。

$ tree
.
|____.git
| |____config
| |____objects
| | |____pack
| | |____info
| |____HEAD
| |____info
| | |____exclude
| |____description
| |____hooks
| | |____commit-msg.sample
| | |____pre-rebase.sample
| | |____pre-commit.sample
| | |____applypatch-msg.sample
| | |____pre-receive.sample
| | |____prepare-commit-msg.sample
| | |____post-update.sample
| | |____pre-applypatch.sample
| | |____pre-Push.sample
| | |____update.sample
| |____refs
| | |____heads
| | |____tags

ここでこの解決策を見つけました:

1
Grokify