[ale] BASHing my head
Scott Plante
splante at insightsys.com
Wed Aug 26 15:18:29 EDT 2015
Well it's still true A != a, note that my A-Z range excuded a.pdf, but got b.pdf. Also, [ABC].pdf excludes lowercase a, b, and c. It's about sort order. It used to sort based on ASCII, but for one thing I guess it caused problems that an è (e w/ accent) sorted after z.
Scott
----- Original Message -----
From: "Jim Kinney" <jim.kinney at gmail.com>
To: "Atlanta Linux Enthusiasts - Yes! We run Linux!" <ale at ale.org>
Sent: Wednesday, August 26, 2015 1:41:13 PM
Subject: Re: [ale] BASHing my head
Wow! Shopt has enough options to make it stand next to emacs.
I don't understand why the default is essentially case insensitive when everything else in bash is case sensitive. It looks like the LANG makes it work that way but that makes no sense either to me. A != a in standard US English.
More of the secret mysteries of Unix philosophy I've never wrapped my head around.
On Aug 26, 2015 12:16 PM, "Scott Plante" < splante at insightsys.com > wrote:
I didn't know the globasciiranges option.
Another solution is the LC_COLLATE variable:
splante:/tmp/x/> ls
a.pdf A.pdf b.pdf B.pdf
splante:/tmp/x/> ls [A-Z].pdf
A.pdf b.pdf B.pdf
splante:/tmp/x/> LC_COLLATE=C
splante:/tmp/x/> ls [A-Z].pdf
A.pdf B.pdf
splante:/tmp/x/> LC_COLLATE=en_US
splante:/tmp/x/> ls [A-Z].pdf
A.pdf b.pdf B.pdf
This is probably a better solution:
splante:/tmp/x/> ls [[:upper:]].pdf
A.pdf B.pdf
Scott
----- Original Message -----
From: "Alex Carver" < agcarver+ale at acarver.net >
To: ale at ale.org
Sent: Wednesday, August 26, 2015 11:34:02 AM
Subject: Re: [ale] BASHing my head
You need to set the shopt globasciiranges otherwise it uses the values
as lexical rather than pure ASCII values.
On 2015-08-26 08:22, Scott M. Jones wrote:
> For some reason my wildcard search in bash starting with uppercase
> letters is finding files starting with lower case. I checked my 'shopt'
> options and they should be correct, but changing them doesn't change the
> results. In this case I DO want a case sensitive search but I'm not
> getting that. What am I doing wrong? (Fedora 21 bash BTW.)
>
> [scott at vbox21 tentcards]$ echo $SHELL
> /bin/bash
> [scott at vbox21 tentcards]$ ls [A-Z]*.pdf
> no_materials.pdf tentcard.pdf tentcard_short.pdf tents.pdf
> tents_short.pdf
> [scott at vbox21 tentcards]$ shopt | grep -i case
> nocaseglob off
> nocasematch off
> [scott at vbox21 tentcards]$ shopt -s nocaseglob
> [scott at vbox21 tentcards]$ shopt -s nocasematch
> [scott at vbox21 tentcards]$ ls [A-Z]*.pdf
> no_materials.pdf tentcard.pdf tentcard_short.pdf tents.pdf
> tents_short.pdf
> [scott at vbox21 tentcards]$ shopt | grep -i case
> nocaseglob on
> nocasematch on
> [scott at vbox21 tentcards]$
> __________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20150826/d55139fb/attachment.html>
More information about the Ale
mailing list