Comportamento de autocompletar estranho

0

Bem ... estou tão confuso, porque o único problema real no meu caso é o apóstrofo (').
Situação: expandindo a conclusão da palavra de influência da variável PATH, com base no fato de haver apóstrofos em caminho adicional ou não.
Exemplo: Eu tenho um arquivo exe (chamado "deadbeef") com direitos exe apropriados, cujo caminho contém 2 apóstrofos:
/ home / mallniya / hard'n'soft /soft/gnu-linux/portable/deadbeef-0.6.0
Especificamente para um experimento eu coloquei o mesmo arquivo para o /home/mallniya/hardnsoftaa/soft/gnu-linux/portable/deadbeef-0.6.0
Se eu exportar o primeiro caminho para a variável $ PATH, não haverá autocompletar no bash, mas estará em um segundo caso. Quando eu digito primeiro terminal cartas de programa no diretório exportado
morto [TAB]
Não há conclusão no primeiro caso, mas quando eu uso TAB com a mesma palavra na segunda condição - funciona.
Mas se eu digitar o comando "deadbeef" no primeiro caso manualmente - também é executado.
Além disso, os comandos e type indicam que o arquivo exe existe nos dois casos.
Então qual é o problema??? Por que bash processar os apóstrofos assim?

    
por mallniya 03.02.2014 / 23:23

3 respostas

1

Bem, como a equipe do bash_completion avisou, relatei esse comportamento para a equipe bash e a resposta é: "Obrigado pelo relatório. Isso será corrigido no bash-4.3." < br> parece que o bug já é conhecido e devemos apenas esperar.

    
por mallniya 10.02.2014 / 20:49
1

Apóstrofos são caracteres especiais para quase todos os shells (shell é o termo que se refere aos intérpretes de linha de comando, que é o programa que lê o que você digita e co o apropriado).

Resposta curta : não faça isso. Como o caso de espaços, melhor evitar nomes de arquivos com significado especial ou caracteres especiais neles.

Resposta longa : se você quiser usar apóstrofos, precisará " orçamento

(0)samsung-romano:~/tmp/try% touch "hard'n'soft"

Uma maneira de cotar aspas simples é com aspas duplas. (E vice-versa, embora seja mais complexo que isso).

(0)samsung-romano:~/tmp/try% ls
hard'n'soft

Agora, se você escrever cat hard e pressionar TAB :

(0)samsung-romano:~/tmp/try% cat hard\'n\'soft 

As barras invertidas são outra forma de citar o seguinte caractere.

    
por Rmano 04.02.2014 / 00:02
0

Para expandir um caminho com apóstrofos, adicione um "na frente do caminho.

cd "/home/mallniya/hard

se expande sem problemas na expansão de guias.

    
por Klaus-Dieter Warzecha 04.02.2014 / 00:00