команда дерева на OSX Bash - PullRequest
       2

команда дерева на OSX Bash

27 голосов
/ 29 ноября 2011

Я следую за показом экрана на рубиновом камне под названием 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

Это выглядит невероятно полезным, как я могу получить эту команду?

Ответы [ 2 ]

59 голосов
/ 29 ноября 2011

Использование доморощенного :

brew install tree

Использование macports :

sudo port install tree

Использование источника :

Следуйте этим указаниям. (Предостережение; вы должныиспользуйте флаги / и т. д., которые имеют смысл.)

Все системы должны поставляться с tree;Я использую это много.И мы можем публиковать структуры каталогов в виде текста, а не рисунков.

1 голос
/ 03 июня 2018

Для простого подхода вы также можете добавить следующий псевдоним в файл ~/.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

Нашел это решение здесь:

...