我使用shopt -s nocaseglob
命令忽略大小写,但如果我使用没有 glob 的字符串,它似乎不起作用。
只是出于好奇的一个问题,是否可以在不使用通配符的情况下忽略大小写?即ls a
会输出a和A
不是ls
没有。但是,您可以使用以下内容:
$ ls [Aa]
$ find . -iname a
$ echo [aA]
Run Code Online (Sandbox Code Playgroud)
这背后的原因是该shopt
命令仅影响 shell 扩展 globs 的方式。因此,当您ls *a
在运行shopt
命令后运行时,它会被您的 shell 扩展为
ls a A
Run Code Online (Sandbox Code Playgroud)
因此,正如@Kevin 所说,glob在传递给之前被扩展ls
,因此nocaseglob
当您提供一个简单的字符串而不是一个 glob 时,它将没有任何影响。