我使用shopt -s nocaseglob
命令忽略大小写,但如果我使用不带 glob 的字符串,它似乎不起作用。
只是出于好奇的一个问题,是否可以在不通配符的情况下忽略大小写?即ls a
会输出两者A和A
答案1
不与ls
不。但是,您可以使用类似以下的内容:
$ ls [Aa]
$ find . -iname a
$ echo [aA]
其背后的原因是该shopt
命令仅影响 shell 扩展 glob 的方式。所以,当你跑步时ls *a
后运行该shopt
命令,该命令会被您的 shell 扩展为
ls a A
因此,正如 @Kevin 所说,全局已扩展前被传递给ls
,因此nocaseglob
当您给出一个简单的字符串而不是一个 glob 时,它将不起作用。
答案2
ls
不会。Glob 扩展在调用之前就由 shell 处理。