[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
nocaseglob doesn't always work as expected.
From: |
Alexey Vinogradov |
Subject: |
nocaseglob doesn't always work as expected. |
Date: |
Mon, 4 Oct 2010 20:14:32 +0700 |
It seems that ranged filename substitution sometimes doesn't work as
expected.
A couple of illustrations.
Source dir:
alexey@ubuntu64:/tmp$ ls -la
...
-rw-r--r-- 1 root root 66 2010-09-21 08:54 ahello.txt
drwxr-xr-x 2 root root 6 2010-09-18 13:09 bigstore
-rw------- 1 alexey alexey 1611084 2010-09-29 18:19 clipboardcache
-rw------- 1 alexey alexey 1611084 2010-09-29 18:19 clipboardcache-1
-rw------- 1 alexey alexey 1611084 2010-09-29 18:19 clipboardcache-2
-rw------- 1 alexey alexey 1611624 2010-09-29 18:19 clipboardcache-3
-rw------- 1 alexey alexey 1 2010-10-04 18:31 cLnlY6
-rw------- 1 alexey alexey 6 2010-10-04 18:31
Code::Blocks-alexey
drwx------ 2 alexey alexey 27 2010-09-03 01:17
codeblocks_dbgrpt-30651-20100903T011749
-rw------- 1 alexey alexey 0 2010-09-13 15:29 codeblocksIJ8lud
srwx------ 1 alexey alexey 0 2010-10-04 18:31 CODEBLOCKS.socket
-rw------- 1 alexey alexey 0 2010-09-03 01:17 codeblocksWrgEbU
drwxr-xr-x 3 alexey alexey 16 2010-08-29 18:02 context
drwxr-xr-x 3 alexey alexey 4096 2010-09-27 19:55 data
...
(I've included only files begin with "b" and "c/C")
Well, let us run:
alexey@ubuntu64:/tmp$ shopt -u nocaseglob; shopt -s nullglob; for a in
[b-c]* ; do echo $a; done
bigstore
clipboardcache
clipboardcache-1
clipboardcache-2
clipboardcache-3
cLnlY6
codeblocks_dbgrpt-30651-20100903T011749
codeblocksIJ8lud
codeblocksWrgEbU
context
-- All as expected.
Another turn:
alexey@ubuntu64:/tmp$ shopt -u nocaseglob; shopt -s nullglob; for a in
[B-C]* ; do echo $a; done
clipboardcache
clipboardcache-1
clipboardcache-2
clipboardcache-3
cLnlY6
Code::Blocks-alexey
codeblocks_dbgrpt-30651-20100903T011749
codeblocksIJ8lud
CODEBLOCKS.socket
codeblocksWrgEbU
context
Note: the nocaseglob is unset. Both letters in the range are actually latin.
Here is the prof:
echo "BC" | hd
00000000 42 43 0a |BC.|
But the range search here is thow out only non-capital "bigstore" from the
listing, and still included both-cased files begin with c/C.
The fact that 'c' is in the range "B-C" looks really strange. I would expect
that this range contains only "B" and C" letters.
However, when directly enumerating the letters, all works ok:
alexey@ubuntu64:/tmp$ shopt -u nocaseglob; shopt -s nullglob; for a in [BC]*
; do echo $a; done
Code::Blocks-alexey
CODEBLOCKS.socket
----------------
bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html
>
cat /etc/issue
Ubuntu 10.04.1 LTS \n \l
uname -a
Linux ubuntu64 2.6.32-25-generic #44-Ubuntu SMP Fri Sep 17 20:05:27 UTC 2010
x86_64 GNU/Linux
- nocaseglob doesn't always work as expected.,
Alexey Vinogradov <=