如何将 Mac 终端配置为具有 color ls 输出?

Posted

技术标签:

【中文标题】如何将 Mac 终端配置为具有 color ls 输出?【英文标题】:How can I configure Mac Terminal to have color ls output? 【发布时间】:2010-11-01 17:08:13 【问题描述】:

如何将 Mac 终端配置为具有彩色 ls 输出? 我正在使用 MacOS 10.5

【问题讨论】:

这是一个很好的问题...我一直期望 ls --color (a la gnu ls) 可以在任何地方工作。 MacOS 不接受 --color,所以我认为它根本没有彩色输出选项。 cyberciti.biz/faq/apple-mac-osx-terminal-color-ls-output-option 【参考方案1】:

编辑:

~/.bash_profile

~/.profile

并添加以下行以简单地通过ls 启用颜色输出:

export CLICOLOR=1

要自定义ls 显示的颜色,您可以选择添加此变量LSCOLORS

示例

默认

export LSCOLORS=ExFxCxDxBxegedabagacad

如果您使用的是黑色背景

,则可以使用它
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx

如果您想模仿典型 Linux 终端的颜色:

export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd

将上述内容添加到 ~/.bash_profile~/.profile 后,您可以注销/登录或在 shell 中获取文件,例如:

$ . ~/.bash_profile

注意:如果您在选择要使用的颜色方面需要帮助,可以使用这个名为 LSCOLORS Generator 的在线工具。

【讨论】:

有没有办法让彩色文本看起来不粗体? @JamieCook 我发现 Mikulas 的颜色与 linux 更一致。具体来说,损坏的符号链接应该是深红色。用你的 lscolors 它的蓝色......这不是一个小问题。 不适用于 mac sierra 及更高版本 @RayFoss 确实,这不是一个小问题,但默认情况下 OS X 无法区分有效和损坏的符号链接。唯一可行的替代方案是use gnu ls @StevieG 在 High Sierra 上为我工作。确保设置正确:echo $CLICOLOR 应该给 1?【参考方案2】:

你可以添加

alias ls='ls -G'

到您的~/.bash_profile 以获取彩色ls 输出。

【讨论】:

我的是别名 ls="ls -Gp" - -p 在每个目录后添加一个斜杠。对我来说,它提供了更多的视觉差异,这很有帮助。 我看到你的-p 并给你提了一个-F,它还在可执行文件后面加上*,在管道后面加上|,在符号链接后面加上@,等等。 只是为了好玩,加入 -h,它将以“人类可读”单位格式化大小,即 100b 10k、23m、4.2g 如果您在 ~/.bash_profile 中还没有 .bash_profile,请务必获取它,以便它可以工作。使用“source ~/.bash_profile” 不知道自 2011 年以来这是否发生了变化,但您可以用 export CLICOLOR=1 替换别名来完成同样的事情。【参考方案3】:

我发现我真正需要的只是将其添加到我的 ~/.bash_profile~/.bashrc(对于 Bash)或 ~/.zshrc(对于 Zsh,Catalina 中的新默认 shell)

export CLICOLOR=1

【讨论】:

~/.bashrc 似乎不适用于 capitan ): 对我来说就像 El Captian 的老板一样工作,感谢您发帖 @Filype 您必须:1. 关闭终端并重新打开,2. 资源配置文件:. ~/.bash_profile,或 3. 注销/登录【参考方案4】:

如果你想要一个可读的 Mac OS X 终端配色方案,你可能想看看这个:

http://toddwerth.com/2008/01/25/a-black-os-x-leopard-terminal-theme-that-is-actually-readable/ http://toddwerth.com/2011/07/21/the-original-ir_black-for-os-x-lion/

我已经使用了一年多了,没有它我可能无法正常工作!

这是一个更新的链接:

https://github.com/justincase/IR_Black-OSX

【讨论】:

从 Mac OS X Lion 10.7 开始,终端允许自定义 ANSI 颜色,因此不再需要使用 SIMBL 或其他扩展。它还支持256色。【参考方案5】:

您还可以通过添加以下内容来自定义提示颜色(及其格式):

PS1='\[\e[0;33m\]\h:\W \u\$\[\e[m\] '

~/.bash_profile~/.profile 文件。 0;33 是常规黄色,在我的黑色/半透明终端窗口中看起来不错。

这里是颜色的完整列表及其解释:https://wiki.archlinux.org/index.php/Color_Bash_Prompt

【讨论】:

【参考方案6】:

就个人而言,我使用Oh My Zsh 为我的终端添加颜色和其他技巧。我认为这是最简单的方法。

oh-my-zsh 是一个开源、社区驱动的管理框架 你的 Zsh 配置。

它捆绑了大量有用的功能、帮助程序、插件, 主题,以及一些让你大喊大叫的东西……

【讨论】:

这是美丽的色彩主题。我可以在我的 bash 上使用这个颜色主题吗? 嗯,你应该看看oh-my-bash 派对迟到了……但你是否记得你的截图中使用的是什么主题? @EricHarlan 你得到了所有的主题github.com/ohmyzsh/ohmyzsh/wiki/Themes【参考方案7】:

另一个选择是使用 GNU ls,它是“coreutils”程序的一部分。

您可以通过Rudix 或 Homebrew (brew info coreutils) 或 Macports 或 Fink 获得它。如果您在不同系统上使用相同的 shell 配置文件,或者已经熟悉 GNU ls,那么这可能比使用“仅限 Mac OS X”的解决方案更可取。

【讨论】:

github.com/gibbling/dircolors【参考方案8】:

更新:一年前我切换到Oh my zsh,这太棒了。我最喜欢的主题是它的lambda-mod 和my version。 在这里结合所有答案就是我使用的:

COLOR_RED="\033[0;31m"
COLOR_YELLOW="\033[0;33m"
COLOR_GREEN="\033[0;32m"
COLOR_OCHRE="\033[38;5;95m"
COLOR_BLUE="\033[0;34m"
COLOR_WHITE="\033[0;37m"
COLOR_RESET="\033[0m"

#git_color
function git_color 
  local git_status="$(git status 2> /dev/null)"

  if [[ ! $git_status =~ "working directory clean" ]]; then
    echo -e $COLOR_RED
  elif [[ $git_status =~ "Your branch is ahead of" ]]; then
    echo -e $COLOR_YELLOW
  elif [[ $git_status =~ "nothing to commit" ]]; then
    echo -e $COLOR_GREEN
  else
    echo -e $COLOR_OCHRE
  fi


#git_branch
function git_branch 
  local git_status="$(git status 2> /dev/null)"
  local on_branch="On branch ([^$IFS]*)"
  local on_commit="HEAD detached at ([^$IFS]*)"

  if [[ $git_status =~ $on_branch ]]; then
    local branch=$BASH_REMATCH[1]
    echo "($branch)"
  elif [[ $git_status =~ $on_commit ]]; then
    local commit=$BASH_REMATCH[1]
    echo "($commit)"
  fi


PS1='\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]'
PS1+="\[\$(git_color)\]"        # colors git status
PS1+="\$(git_branch)"           # prints current branch
PS1+="\[$COLOR_BLUE\]\[$COLOR_RESET\]\$ "
export PS1

export LC_ALL=en_US.UTF-8
export CLICOLOR=1
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
alias ls="ls -Gp"

【讨论】:

【参考方案9】:

只需将以下行添加到~/.bash_profile 文件:

export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "

预览:

这是我喜欢的颜色。您可以通过更改作为 ANSI 颜色代码的 m 代码(例如 34m)来自定义提示颜色的每个部分。

ANSI 颜色代码列表:

黑色:30m 红色:31m 绿色:32m 黄色:33m 蓝色:34m 紫色:35m 青色:36m 白色:37m

【讨论】:

【参考方案10】:

为了天哪,忘记所有那些几十年前的神秘代码,使用内置终端 --> 首选项...设置窗格来设置默认皮肤,并根据自己的喜好编辑 ANSI 颜色。您也可以设置字体。我更喜欢 Menlo 12pt。这就是任何普通 Joe 都可以做到的方式,并避免像其他海报所建议的那样使用所有疯狂的命令行、unix 式的做事方式。

【讨论】:

我认为任何有足够经验的人甚至知道ls 可以有彩色输出也能够运行一些 Unix 命令来正确配置它。 但这只是让 ls 以一种颜色显示它不会像 ls 那样使链接、目录、文件以不同的颜色显示【参考方案11】:

Catalina版本需要在~/.zshrc中添加export CLICOLOR=1

如果要调整调色板,请在终端设置中更改颜色主题。

【讨论】:

这是 Catalina with zsh 的最新答案。

以上是关于如何将 Mac 终端配置为具有 color ls 输出?的主要内容,如果未能解决你的问题,请参考以下文章

Mac终端获取文件权限(ls -l或ls -al)、修改文件权限、权限中每个字符的含义

Mac 使用 iTerm2 + Oh My Zsh 配置个性化终端

mac的shell是啥

mac配置ls命令显示不同文件不同颜色

mac终端方式修改host

如何安装Mac 上最强大的终端 iTerm2