OS X Terminal Colors

I'm new to OS X, having just gotten a Mac after working with Ubuntu Linux for some time. Among the many things I'm trying to figure out is the absence of colors in my terminal window - like the ones that are shown (on Linux) when running ls -la or git status ...

I just can't figure out how to activate colors in my shell.


I know, this thread is old but the issue not.

Here is a solution I've found to enable the global terminal colors.

Edit your .bash_profile (since OS X 10.8) — or (for 10.7 and earlier): .profile or .bashrc or /etc/profile (depending on availability) — in your home directory and add following code:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 simply enables coloring of your terminal.

LSCOLORS=... specifies how to color specific items.

After editing .bash_profile , start a Terminal and force the changes to take place by executing:

source ~/.bash_profile

Then go to Terminal > Preferences , click on the Profiles tab and then the Text subtab and check Display ANSI Colors .

Verified on Sierra (May 2017).


You can use the Linux based syntax in one of your startup scripts. Just tested this on an OS X Mountain Lion box.

eg. in your ~/.bash_profile

export TERM="xterm-color" 
export PS1='[e[0;33m]u[e[0m]@[e[0;32m]h[e[0m]:[e[0;34m]w[e[0m]$ '

This gives you a nice colored prompt. To add the colored ls output, you can add alias ls="ls -G" .

To test, just run a source ~/.bash_profile to update your current terminal.

Side note about the colors: The colors are preceded by an escape sequence e and defined by a color value, composed of [style;color+m] and wrapped in an escaped [] sequence. eg.

  • red = [e[0;31m]
  • bold red (style 1) = [e[1;31m]
  • clear coloring = [e[0m]
  • I always add a slightly modified color-scheme in the root's .bash_profile to make the username red, so I always see clearly if I'm logged in as root (handy to avoid mistakes if I have many terminal windows open).

    In /root/.bash_profile :

    PS1='[e[0;31m]u[e[0m]@[e[0;32m]h[e[0m]:[e[0;34m]w[e[0m]$ '

    For all my SSH accounts online I make sure to put the hostname in red, to distinguish if I'm in a local or remote terminal. Just edit the .bash_profile file in your home dir on the server.. If there is no .bash_profile file on the server, you can create it and it should be sourced upon login.


    MartinVonMartinsgrün and 4Levels methods confirmed work great on Mac OS X Mountain Lion.

    The file I needed to update was ~/.profile.

    However, I couldn't leave this question without recommending my favorite application, iTerm 2.

    iTerm 2 lets you load global color schemes from a file. Really easy to experiment and try a bunch of color schemes.

    Here's a screenshot of the iTerm 2 window and the color preferences. iTerm2颜色首选项截图Mac

    Once I added the following to my ~/.profile file iTerm 2 was able to override the colors.

    export CLICOLOR=1
    export LSCOLORS=GxFxCxDxBxegedabagaced
    export PS1='[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$ '
    

    Here is a great repository with some nice presets:

    iTerm2 Color Schemes on Github by mbadolato

    Bonus: Choose "Show/hide iTerm2 with a system-wide hotkey" and bind the key with BetterTouchTool for an instant hide/show the terminal with a mouse gesture.

    链接地址: http://www.djcxy.com/p/15434.html

    上一篇: 如何使用.NET从十六进制颜色代码获取颜色?

    下一篇: OS X终端颜色