阻止 bash 智能完成并忽略扩展

阻止 bash 智能完成并忽略扩展

为什么 bash 无法完成解压缩行中的 bar.dat - 该文件位于当前目录中。 bash 是否会读取文件扩展名并试图提供帮助?

[a@localhost:~/tmp]$ echo "Hello World" > foo.txt
[a@localhost:~/tmp]$ zip bar.dat foo.txt
  adding: foo.txt (stored 0%)
[a@localhost:~/tmp]$ unzip bar.dat   <---- won't complete bar.dat
Archive:  bar.dat
replace foo.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: n
[a@localhost:~/tmp]$ file bar.dat
bar.dat: Zip archive data, at least v1.0 to extract

答案1

这是通过bash完成_install_xspec函数完成的。您的本地设置可能有所不同,但通常各种文件扩展名完成都是由_xspecs数组控制的。做这个:

$ set | grep _xspecs

您将看到一堵巨大的文本墙,以 开头_xspecs=(。还将有一个部分unzip

[unzip]="!*.@(zip|[ejsw]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|do[ct][xm]|p[op]t[mx]|xl[st][xm])"

dat如您所见,此列表中没有。

相关内容