linux - How to make `ls` color its output by default, without setting up an alias?

06
2014-04
  • amn

    I don't want an alias (alias ls='ls --color'), and I had previously set this up on Mac OSX using CLICOLOR environment variable which magically brought colors to ls. Now I am on Linux (Arch x86-64) with xterm and a really basic setup, and I can't make ls output color (using ls verbatim). I do get color when using --color switch.

    Is there no way to achieve this? POSIX compliance would be nice :-)

  • Answers
  • pdah

    There is no way: the ls man page will show you that the default setting (for --color) is 'none' - ie. never use colour.

    Any reason you don't want to use aliases? I'm a recovering Red Hat user, so every time I install a new distribution I set three ls aliases like so:

    ## Colorize the ls output ##
    alias ls='ls --color=auto'
    
    ## Use a long listing format ##
    alias ll='ls -la'
    
    ## Show hidden files ##
    alias l.='ls -d .* --color=auto'
    

  • Related Question

    linux - How do I make XTerm not use bold?
  • mike

    I like using XTerm, I like its default "fixed" font, and I like using terminal colors rather than having a monochromatic terminal.

    However, XTerm seems to insist on using a bold version of the font whenever it's displaying a bright color:

    screenshot

    I hate the bold version of the font, but I like the brightness. The man page seems to suggest that adding "XTerm.VT100.boldMode:false" to my ~/.Xresources would disable this "feature", but it doesn't seem to have any effect. I've had it in there for months, so it's not a rebooting issue.

    How can I force XTerm to always use the standard, non-bold version of the fixed font, even when it's displaying bright text?

    Edit: Some have suggested putting "XTerm*boldMode: false" in my ~/.Xresources. That didn't help either. I've confirmed that the changes have taken effect with xrdb, though:

    $ xrdb -query | grep boldMode 
    XTerm*boldMode: false
    

    If I run xprop and click an xterm, I get "WM_CLASS(STRING) = "xterm", "XTerm"" .. so I'm definitely running real xterms.

    BTW, this is just a plain-vanilla Ubuntu Intrepid box. If anyone else here is running the same, can you try running:

    echo -e '#\e[1m#'
    

    ...and let me know whether the # on the right has a black pixel in the middle like the one on the left does?


  • Related Answers
  • gaqzi

    If you set the same font for bold and normal font it might work.

    I set the fixed font for both like:

    xterm*font: fixed
    xterm*boldFont: fixed
    

    And after the usual xrdb -load and starting a new term it were back to not being bold :)

  • jamuraa

    X resources aren't reloaded until you reload the X windowing system, and they aren't polled unless you restart the executable which is doing it. Try running

    xrdb ~/.Xresources
    

    in your current session. Then start another xterm. The next time you start X (relogin or reboot) the resources should be read automatically.

    Another thing to try is to use a wildcard to make sure that it is picking up the resource correctly. Use

    XTerm*boldMode: false
    

    instead.

    Yet another thing to check is that you are actually running xterm when you run a terminal process. If not, you will need to change the fonts with a different resource.

  • MicahElliott

    I found it necessary (on Lucid Lynx) to create ~/.Xdefaults-$(hostname). Omitting hostname made settings ineffective. ba's matching of font and boldFont did the trick of eliminating bold. xfontsel is a nice way to figure out what font to specify there. You can also start an xterm with something like xterm -font '-misc-fixed-medium-r-*-*-10-*-*-*-*-*-*-*' to test that your defaults are taking effect.

  • 8088

    It's an xterm bug:

    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347790

    A temporary fix which works for me is to put the following cludgy fix at the end of your .bashrc file:

     echo -e "\e[1mA\e[2J\e[7mB\e[m\e[?5h\e[?5l"
     clear
    
  • maximk

    On fontsel-based system try xterm -fa Fixed. On my machine this fixes bold fonts, albeit the rendering becomes slower.

  • terdon

    Setting allowBoldFonts property works for me

    Add the following line in your ~/.Xresources

    XTerm*allowBoldFonts: false
    
  • Kevin Panko

    Check if the setting has taken effect:

    xrdb -query | grep XTerm
    

    If it is not in there, then you can force it to load:

    xrdb -load ~/.Xresources
    

    See the man page for more on this command.