On my work Linux box (Ubuntu 12.04, aka “Precise Pangolin”), the ‘ls’ command lists files beginning with an underscore intermixed with other files. In other words, the following four files will be displayed like so:
blanders@arya$ ls a.txt b.txt _c.txt d.txt
This is not what I want. I want files that begin with an underscore to be sorted first in the list. Fortunately, there’s an easy way to fix this. The sort order is controlled by the LC_COLLATE locale variable. By default, it’s set to:
blanders@arya$ locale | grep LC_COLLATE LC_COLLATE="en_US.UTF-8"
If we override this to set LC_COLLATE to either ‘C’ or ‘POSIX’, Linux will do what I want:
blanders@arya$ LC_COLLATE=C ls _c.txt a.txt b.txt d.txt
I don’t want to override LC_COLLATE globally, since that may cause unexpected effects elsewhere, so let’s just override it for the ‘ls’ command:
alias ls='LC_COLLATE=C ls' blanders@arya$ ls _c.txt a.txt b.txt d.txt