shopt -s nocaseglob 不适用于 Ubuntu

pad*_*mar 7 shell filenames wildcards

不区分大小写的文件名通配在 Ubuntu 11.04 64 位上的 bash 中不起作用。中指定的shell选项.bashrc如下:

shopt -s nocaseglob 
shopt -s nocasematch
Run Code Online (Sandbox Code Playgroud)

shopt 还表明nocaseglobnocasematchon。但是对于目录更改或打开文件,它在不区分大小写模式下不起作用。

我想检查是否需要任何其他选项来启用不区分大小写的文件名通配。

Gil*_*il' 8

你真的在做通配符,即通配符扩展吗?例如,假设您有一个名为Foobar. 然后

cd foobar
Run Code Online (Sandbox Code Playgroud)

不做通配符,因为没有通配符。当您准确指定文件名时,由应用程序决定如何处理它,并且由于 unix 文件名区分大小写,Foobar如果您告诉应用程序打开名为foobar.

另一方面,

cd foo*
Run Code Online (Sandbox Code Playgroud)

将更改到Foobar目录(假设没有其他匹配项),如果您已设置该nocaseglob选项。

您也可以使完成不区分大小写。把set completion-ignore-case on~/.inputrc,或

bind 'set completion-ignore-case on'
Run Code Online (Sandbox Code Playgroud)

~/.bashrc。然后在输入cd foo并按下后Tab,shell 将完成Foobar