ls 命令:如何在不通配符的情况下忽略大小写

Fru*_*uit 5 ls bash wildcards

我使用shopt -s nocaseglob命令忽略大小写,但如果我使用没有 glob 的字符串,它似乎不起作用。

在此处输入图片说明

只是出于好奇的一个问题,是否可以在不使用通配符的情况下忽略大小写?即ls a会输出aA

ter*_*don 5

不是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 时,它将没有任何影响。