ChatGPT解决这个技术问题 Extra ChatGPT

OS X Terminal Colors [closed]

Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 9 years ago. Improve this question

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.

Closed as "off topic" but look at the tags: osx, shell, terminal, colours ... seems like to me it's totally on-topic. Covers OSX, it's about the shell, using terminal and wants to add colours. Have to edit the bash profile, so yeah, I'd say it's on-topic.
Clearly on topic, it's about bash scripting.
Closed, you have to be kidding! Clearly this has utility and value to many (mostly new) Mac coders. If those closing are serious about it being off topic, then why not migrate it to say SE Think Different. I take it SO supports that function used in other SE groups.

0
0xPixelfrost

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).


just did this by adding it to .bash_profile and it works. didn't work when I added it to .profile though. Thanks!
I just edited my /etc/profile and it works like a charm.
To @Morten and any others struggling with their bash profiles, see these answers for an explanation and a solution: stackoverflow.com/a/7780055/665488, superuser.com/a/244990.
dotfiles/.aliases has a great export LS_COLORS statement
If you want the same colors that Linux uses (at least Debian and Ubuntu), use LSCOLORS=ExGxFxdxCxDxDxxbaDecac
4
4levels

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.

If this is not working as expected for you, please read some of the comments below since I'm not using MacOS very often..

If you want to do this on a remote server, check if the ~/.bash_profile file exists. If not, simply create it and it should be automatically sourced upon your next login.


how do you edit bash_profile for ssh accounts online?
I like PS1 better with $PWD instead of \u, as such: PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
Here's some more explanation of the codes for the prompt: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step.
These links might also be helpful: ANSI color code escape sequences. More on PS1 codes.
I was having issues getting PROMPT_COMMAND colors to display correctly in El Capitan (OS X 10.11) using these color codes. Turns out that when used in PROMPT_COMMAND, you need to use the \033 syntax instead of \e. Example to add a colored timestamp before your prompt (include this in your ~/.bashrc or ~/.bash_profile): PROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
N
Nick Woodhams

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.

https://i.stack.imgur.com/uMHPG.jpg

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='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[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.


iTerm2 crashed often on my system, so i switched over to oh-my-zsh github.com/robbyrussell/oh-my-zsh. There are also themes available
Hey! Please change baskerville link to proper one. Seems wrong copy-paste.
@NickWoodhams, what is the color-theme you are using in the screenshot?
@IndradhanushGupta Not sure what color scheme that was, it was a while ago. But now I am using the Pure ZSH theme and loving it. github.com/sindresorhus/pure
this is a nice color scheme and what I needed to check the items types //dirs and etc
M
Marcio

If you want to have your ls colorized you have to edit your ~/.bash_profile file and add the following line (if not already written) :

source .bashrc

Then you edit or create ~/.bashrc file and write an alias to the ls command :

alias ls="ls -G"

Now you have to type source .bashrc in a terminal if already launched, or simply open a new terminal.

If you want more options in your ls juste read the manual ( man ls ). Options are not exactly the same as in a GNU/Linux system.


A somewhat better option is to replace the 'alias' definition with 'export CLICOLOR=" "'. This has the advantage of usually continuing to work even if you switch shells during a terminal session (as long as environment variables are inherited - aliases aren't).
m
miken32

If you are using tcsh, then edit your ~/.cshrc file to include the lines:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Where, like Martin says, LSCOLORS specifies the color scheme you want to use.

To generate the LSCOLORS you want to use, checkout this site


bash has been the default in OS X since October 2003.
I think you're right. I just got a new mac and it had bash as default. I guess IT kept setting up my macs at work to have tcsh by default.
The link is just awesome!
W
William Rose

Check what $TERM gives: mine is xterm-color and ls -alG then does colorised output.


well, on capitan with xterm-256color, I get no colours. CLICOLOR and LSCOLORS don't change that ):
C
Cajunluke

When I worked on Mac OS X in the lab I was able to get the terminal colors from using Terminal (rather than X11) and then editing the profile (from the Mac menu bar). The interface is a bit odd on the colors, but you have to set the modified theme as default.

Further settings worked by editing .bashrc.