11

on iTerm2 bash

If there any way to change the color when 'ls' so i can quickly know if it's a directory, a file, a script, exec?

Just like the Ubuntu terminal so you know a directory color for example its green

Thank you!

4 Answers 4

8

You can use the G option of ls, which takes its colours from LSCOLORS. To always use the G option with ls, add an alias to a sourced file.

alias ls="ls -G"
7

To change the colors you want to set these two environment variables in ~/.bash_profile or similar:

CLICOLOR=1
LSCOLORS=Fxfxcxdxbxegedabagacad

The color format for LSCOLORS is actually very reasonable (unlike setting colors in the prompt or similar):

The color designators are as follows:

       a     black
       b     red
       c     green
       d     brown
       e     blue
       f     magenta
       g     cyan
       h     light grey
       A     bold black, usually shows up as dark grey
       B     bold red
       C     bold green
       D     bold brown, usually shows up as yellow
       E     bold blue
       F     bold magenta
       G     bold cyan
       H     bold light grey; looks like bright white
       x     default foreground or background

Note that the above are standard ANSI colors.  The actual display may 
differ depending on the color capabilities of the terminal in use.

The order of the attributes are as follows:

       1.   directory
       2.   symbolic link
       3.   socket
       4.   pipe
       5.   executable
       6.   block special
       7.   character special
       8.   executable with setuid bit set
       9.   executable with setgid bit set
       10.  directory writable to others, with sticky bit
       11.  directory writable to others, without sticky bit
4
  • what about text files. or scripts?
    – Natsfan
    Commented Feb 26, 2019 at 16:00
  • What about them? Sounds like a different question? Commented Feb 26, 2019 at 21:26
  • No not really, the question title mentions files. Files may be text files. I was wondering if there was a setting for those. And does the file need to be designated by .txt or will .dat work as well.
    – Natsfan
    Commented Feb 28, 2019 at 16:33
  • Oh, sorry, I misunderstood. You can only have colors reflect the categories mentioned in the bottom half of the answer. Nothing special for text files etc. Commented Feb 28, 2019 at 20:32
6

Iterm2

  1. Profiles > Open Profiles > Edit Profiles... > Profiles
  2. Select "Colors" (it's the next tab)
  3. Modify Bright Cyan under ANSI Colors and choose a darker color e.g 000fff this is a darker blue.

screenshot-profile-colors

Resulting in a much easier to read "dark" experience:

screenshot-ls

Please note you could instead change directories to map to blue rather than Cyan but this is easier.

2

As an alternative, I have the following in my .bash_profile:

export CLICOLOR=1

(According to man ls, ls -G is equivalent to setting this variable. Personally I prefer that over the alias, but I can't rationally justify that position :-))

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .