CygwinはWindowsと同様に大文字と小文字を区別します。たとえば、次のようになります。
$ touch ABC; rstr=$(openssl rand -base64 12); echo $rstr; echo $rstr > AbC; cat abc
dGRMOHqqoy0/nc96
dGRMOHqqoy0/nc96
$ ls | grep -i abc
ABC
ファイルまたはディレクトリ名の大文字と小文字は保存されますが、操作するときは無視されます。
ABC
をAbC
選択し、abc
同じファイルを選択します。
与えられたファイルパスまたはディレクトリパスの大文字と小文字を取得する安定した方法はありますか?別の名前で保存しますか?grepトリックは非常に迅速に非常に面倒になることができます。
答え1
でzsh
このextendedglob
オプションをオンにすると、次のことができます。
$ set -o extendedglob
$ printf '%s\n' (#i)path/to/file
Path/to/FILE
path/to/file
ライブラリと一緒に受け取りました。
存在するksh93
:
$ printf '%s\n' ~(i)path/to/file
Path/to/FILE
(一致するものがない場合は展開されます。ksh93には対応するアイテムやオプションは~(i)path/to/file
ありませんが、一致するものがない場合はnullに拡張するために使用できます。)nomatch
failglob
~(Ni)path/to/file
とbash
オプションがオンの場合は、次のことができます。extglob
failglob
nocaseglob
$ shopt -s extglob failglob nocaseglob
$ printf '%s\n' @(path)/@(to)/@(file)
Path/to/FILE
それ以外の場合はextglob
これを行うことができますが、printf '%s\n' [p]ath/[t]o/[f]ile
確実に自動化することはより困難です。
(とにかくシェルはと同じことを行います。ls | grep -i
つまり、一致するファイルを見つけるにはディレクトリ全体の内容を読む必要がありますgrep -i
。
答え2
まさにあなたが要求したものではありませんが、あなたが興味を持っているものかもしれません。
覚えていないところに持っていきましたが効果がありました。
大文字と小文字の区別 NTFS
Windowsでは、個々のフォルダまたはボリュームに対して大文字と小文字を区別することはできませんが、システム全体で大文字と小文字を区別することはできます。
レジストリキーの値を変更する必要があります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive
1から0にシステムを再起動します。
これにより、次のインストールにposix=0
変更する必要があります。posix=1
/etc/fstab
d:\cyg_pub /pub NTFS binary,posix=1,nouser 0 0
以来
$ cd /tmp
$ touch Pippo
$ touch PIppo
$ touch PIPpo
$ ls P*
Pippo PIppo PIPpo