linux - How to make `ls` color its output by default, without setting up an alias?
2014-04
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 :-)
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'
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:
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?
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 :)
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.
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.
It's an xterm bug:
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
On fontsel-based system try xterm -fa Fixed
. On my machine this fixes bold fonts, albeit the rendering becomes slower.
Setting allowBoldFonts
property works for me
Add the following line in your ~/.Xresources
XTerm*allowBoldFonts: false
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.