Parar a conclusão do bash de ser inteligente e ignorar extensões

2

Por que o bash não completará o bar.dat na linha de descompactação - o arquivo está no diretório atual. O bash está lendo extensões de arquivo e tentando ser útil?

[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
    
por Adrian 12.10.2017 / 18:18

1 resposta

1

Isso é feito pela função bash completion _install_xspec . Seu a configuração local pode variar, mas normalmente várias conclusões de extensões de arquivo são controlados por _xspecs array. Faça isso:

$ set | grep _xspecs

Você verá uma parede gigantesca de texto que começa com _xspecs=( . Haverá também uma seção para 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])"

Como você vê, não há dat nessa lista.

    
por 12.10.2017 / 20:53