为什么 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
如您所见,此列表中没有。