首页 > 解决方案 > OS X Bash 上的树命令

问题描述

操作系统: MacOS Mojave 10.14.6外壳: Bash 5.0.11(自制的 Bash)

安装了树公式,但是很难让它以我想要的颜色输出。

mac的系统默认$LSCOLORSLSCOLORS=exfxcxdxbxegedabagacad. 在我的 .bash_profile 中,我的设置为LSCOLORS=gxcxdxdxbxxxxxbxbxgxgx. 我也CLICOLOR=1定了。

如果我.bash_profile像这样离开并运行ls,输出会以我想要的颜色显示。但是,当我运行时tree,输出显示系统默认着色。

我尝试更改$LSCOLORS$LS_COLORS,因为这是树的手册页所建议的。“ls”命令仍然显示正确的颜色,但这会导致树以默认颜色打印所有内容(根本没有着色)。设置时$TREE_COLORS也是如此。

有任何想法吗?

标签: bashmacostreehomebrew

解决方案


在 OS X 上,该$LSCOLORS变量定义了ls命令的彩色输出。因为tree不是 OS X 的本机命令,所以它会查找 GNU 变量及其相关格式来确定要使用的颜色。如果未设置这些,它将使用系统默认值。

如果您没有安装 GNU 命令,您可以通过运行以下命令从自制软件中获取它们:

brew install coreutils

为了避免与 OS X 命令冲突,所有 GNU 命令都以g. 所以输入ls会运行 OS X 版本的ls命令,而输入会gls运行 GNU 版本的ls命令。

一旦安装了 GNU 命令,您必须以 Linux 系统可以理解的方式设置颜色变量。dircolors在 GNU shell 上运行该命令会为您提供$LS_COLORS变量的默认值。所以因为所有命令都安装了前缀,所以g运行gdircolors。将输出复制到您的.bash_profile, 并根据需要修改颜色。

这是一个非常深入的指南,关于每个键的含义,以及哪些代码对应于哪些颜色: http: //www.bigsoft.co.uk/blog/2008/04/11/configuring-ls_colors该系统还提供一个指南,虽然它不那么深入。要查看此内容,请运行gdircolors -p.

现在,我在我的.bash_profile.

export CLICOLOR=1 
export LSCOLORS=gxcxdxdxbxxxxxbxbxgxgx

这首先启用彩色输出,然后定义ls命令的 OS X 版本使用的颜色。

LS_COLORS='rs=0:di=36:ln=32:mh=00:pi=33:so=33:do=33:bd=00:cd=00:or=05;36:mi=04;93:su=31:sg=31:ca=00:tw=36:ow=36:st=36:ex=031:*.tar=00:*.tgz=00:*.arc=00:*.arj=00:*.taz=00:*.lha=00:*.lz4=00:*.lzh=00:*.lzma=00:*.tlz=00:*.txz=00:*.tzo=00:*.t7z=00:*.zip=00:*.z=00:*.dz=00:*.gz=00:*.lrz=00:*.lz=00:*.lzo=00:*.xz=00:*.zst=00:*.tzst=00:*.bz2=00:*.bz=00:*.tbz=00:*.tbz2=00:*.tz=00:*.deb=00:*.rpm=00:*.jar=00:*.war=00:*.ear=00:*.sar=00:*.rar=00:*.alz=00:*.ace=00:*.zoo=00:*.cpio=00:*.7z=00:*.rz=00:*.cab=00:*.wim=00:*.swm=00:*.dwm=00:*.esd=00:*.jpg=00:*.jpeg=00:*.mjpg=00:*.mjpeg=00:*.gif=00:*.bmp=00:*.pbm=00:*.pgm=00:*.ppm=00:*.tga=00:*.xbm=00:*.xpm=00:*.tif=00:*.tiff=00:*.png=00:*.svg=00:*.svgz=00:*.mng=00:*.pcx=00:*.mov=00:*.mpg=00:*.mpeg=00:*.m2v=00:*.mkv=00:*.webm=00:*.ogm=00:*.mp4=00:*.m4v=00:*.mp4v=00:*.vob=00:*.qt=00:*.nuv=00:*.wmv=00:*.asf=00:*.rm=00:*.rmvb=00:*.flc=00:*.avi=00:*.fli=00:*.flv=00:*.gl=00:*.dl=00:*.xcf=00:*.xwd=00:*.yuv=00:*.cgm=00:*.emf=00:*.ogv=00:*.ogx=00:*.aac=00:*.au=00:*.flac=00:*.m4a=00:*.mid=00:*.midi=00:*.mka=00:*.mp3=00:*.mpc=00:*.ogg=00:*.ra=00:*.wav=00:*.oga=00:*.opus=00:*.spx=00:*.xspf=00:';

export LS_COLORS

这定义了 GNU 版本的ls命令使用的颜色。这也是该tree命令使用的配色方案(我猜是所有其他 GNU 命令)。

也可以将这些变量存储在一个文件中,例如.dircolors,只需将以下行添加到您的文件中.bash_profile

source '/path/.dircolors'

在上面,请确保替换path为文件的路径.dircolors。但是,我更喜欢将所有东西整齐地放在一个地方,即我的.bash_profile.


推荐阅读