[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