Date: Tue, 31 Jan 2012 12:05:57 -0800 From: Edward Martinez <eam1edward@gmail.com> To: Robert Bonomi <bonomi@mail.r-bonomi.com> Cc: freebsd-questions@freebsd.org Subject: Re: bash LC_COLLATE or LC_ALL set =?windows-1252?q?=93C=94_not__?= =?windows-1252?q?sort_in_dictionary_order=2E?= Message-ID: <4F2849A5.5070504@gmail.com> In-Reply-To: <201201311431.q0VEVimC094105@mail.r-bonomi.com> References: <201201311431.q0VEVimC094105@mail.r-bonomi.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 01/31/12 06:31, Robert Bonomi wrote: >> From owner-freebsd-questions@freebsd.org Tue Jan 31 05:45:47 2012 >> Date: Tue, 31 Jan 2012 04:45:36 -0800 >> From: Edward Martinez<eam1edward@gmail.com> >> To: FreeBSD Questions<freebsd-questions@freebsd.org> >> Subject: bash LC_COLLATE or LC_ALL set =?windows-1252?q?=93C=94_not__sort?= >> =?windows-1252?q?_in_dictionary_order=2E?= >> >> >> >> >> Hi, >> >> Been trying to get BASH to sort set characters in dictionary order. >> I typed "locale" and it shows LC_COLLATE and LC_ALL are set to "C" >> thought that was enough to work, >> however when i type metacharacters: set character; any character, >> something like this: >> >> ls [a-cx-y]* >> >> bash does not sort in dictionary order; file "Binarc" does not >> list. >> > *OF*COURSE* it doesn't. Unix is _case_sensitive_. You specified a lower- > case only (in the C locale) pattern. Naturally, it doesn't match a file > with an upper-case character in it. > > Note: in the 'C' locale, characters are sorted on the underlying byte value. > Thus you will get all the upper-case matches before any lower-case match. > > To get upper-and-lower case files in the C locale, you will have to use: > ls [A-CX-Ya-cx-y]* > > IF you speciy a different charset for collating, you _may_ get upper/lower > case characters sorted adjacently. See the specifications for the charset > in question. > > Thanks for reply! I meant LC_COLLATE being set to en_US.UTF-8 not C. linux and solaris shows both upper and lowercase when set characters like [a-cx-y] and others are used. when LC_COLLATE is set to en_US.UTF-8. I thought it could be also done in FreeBSD's bash when LC_COLLATE is set to en_US.UTF-8 in linux LC_COLLATE is set to en_US,UTF-8 eam@localhost ~/testdir $ locale LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" *LC_COLLATE=en_US.UTF-8* LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= And when i type the following it shows both: eam@localhost ~/testdir $ ls [a-cx-y]* bincar Bincar eam@localhost ~/testdir $ ls [a-z]* bincar Bincar file File zcar
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F2849A5.5070504>