使用tree命令生成项目目录树

5,026 阅读3分钟

真正的教育,
是一棵树撼动另一棵树,
一片云推动另一片云,
一个灵魂唤醒另一个灵魂。

     ——雅斯贝尔斯

tree命令说明

  最近想使用tree命令来生成项目目录树做一些项目说明,tree是一个能列出递归目录的命令,以图形显示驱动器或路径的文件夹结构,可以生成目录树。

tree命令安装

  Windows和Linux都有,mac下默认是没有 tree命令的,需要先安装tree。安装命令如下:

brew install tree

  发现我新的Mac没有安装brew命令,需要先安装homebrew。

Mac下安装Homebrew

  Homebrew 安装 Apple(或您的 Linux 系统)没有预装但你需要的东西,命令安装如下:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  按照官网的命令安装时会出错,错误信息如下:

curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

  在网上搜了很多资料,有人说是因为代理问题,有人说是Redis的问题,试了下都不行,最后解决办法如下,重装command line tools,再执行安装指令,homebrew安装成功。

  1. 移除旧的command line tools
    • $ sudo rm -rf /Library/Developer/CommandLineTools
  2. 重装command line tools
    • $ xcode-select --install
  3. 执行homebrew安装命令
    • $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

注意第一步命令需要加上sudo才有权限

  这个问题产生的原因是没有更新OS X El Capitan,在MAC下,git命令是在Xcode命令工具下的。安装的过程会暂停,需要耐心等待,有时因为网络问题,需要多试几次才行,本人试了三次才成功。

Homebrew基本使用

// 搜索包
brew search mysql

// 安装包
brew install mysql

// 查看包信息,比如目前的版本,依赖,安装后注意事项等
brew info mysql

// 卸载包
brew uninstall wget

// 显示已安装的包
brew list

// 查看brew的帮助
brew –help

// 更新, 这会更新 Homebrew 自己
brew update

// 检查过时(是否有新版本),这会列出所有安装的包里,哪些可以升级
brew outdated
brew outdated mysql

// 升级所有可以升级的软件们
brew upgrade
brew upgrade mysql

// 清理不需要的版本极其安装包缓存
brew cleanup
brew cleanup mysql

tree命令使用

tree [OPTIONS] [directory]

tree 常见的命令如下:

  • -a 显示所有文件和目录
  • -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合
  • -C 在文件和目录清单加上色彩,便于区分各种类型
  • -d 显示目录名称而非内容
  • -D 列出文件或目录的更改时间
  • -f 在每个文件或目录之前,显示完整的相对路径名称
  • -F 根据ls -F,为目录添加一个'/',为套接字文件添加一个'=',为可执行文件添加一个' *',为FIFO添加一个' |'
  • -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
  • -i 不以阶梯状列出文件或目录名称
  • -I 不显示符合范本样式的文件或目录名称
  • -l 跟随目录的符号链接,就像它们是目录一样。避免了导致递归循环的链接
  • -n 不在文件和目录清单加上色彩
  • -N 按原样打印不可打印的字符
  • -p 列出权限标示
  • -P 只显示符合范本样式的文件或目录名称
  • -q 将文件名中的不可打印字符作为问号打印
  • -s 列出文件或目录大小
  • -t 用文件和目录的更改时间排序
  • -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
  • -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外

参考资料:

  1. Mac下Homebrew的安装与使用
  2. tree命令-一键生成目录结构