bash - OS X Bash 上的树命令
问题描述
操作系统: MacOS Mojave 10.14.6外壳: Bash 5.0.11(自制的 Bash)
我从homebrew安装了树公式,但是很难让它以我想要的颜色输出。
mac的系统默认$LSCOLORS
是LSCOLORS=exfxcxdxbxegedabagacad
. 在我的 .bash_profile 中,我的设置为LSCOLORS=gxcxdxdxbxxxxxbxbxgxgx
. 我也CLICOLOR=1
定了。
如果我.bash_profile
像这样离开并运行ls
,输出会以我想要的颜色显示。但是,当我运行时tree
,输出显示系统默认着色。
我尝试更改$LSCOLORS
为$LS_COLORS
,因为这是树的手册页所建议的。“ls”命令仍然显示正确的颜色,但这会导致树以默认颜色打印所有内容(根本没有着色)。设置时$TREE_COLORS
也是如此。
有任何想法吗?
解决方案
在 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
.
推荐阅读
- terraform - 可以使用 Terraform 添加到 AWS Glue Crawler 的 s3_targets / 数据存储是否存在最大限制?
- java - 我有一个 KeyListener 的内部类,它返回一个错误说“不是抽象的,不会覆盖抽象方法”
- python - 如何集成 sympy 表达式和 Latex 格式
- hyperledger-fabric - 如何使用 Hyperledger Fabric 管理链下数据?
- swift - 为任何 Object 自动生成 CustomStringConvertible 实现
- c# - 如何将 DbContext 转换为 MyContext
- excel - 在 vba 公式中使用字符串元素
- javascript - 当应用程序处于后台或被终止时,在 React Native 中显示模式通知。类似于 Whatsapp 呼叫通知
- r - 在 for 循环中使用 if 语句根据条件计算行数
- kotlin - Kotlin,如果函数中使用了默认参数,我可以得到吗?