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>
