Questão Conclusão da guia Bash filename


Eu tenho notado, por vezes, que a conclusão da tabulação é filtrada de forma útil no bash. Eu sou um programador java e geralmente uso o java e javac comandos no terminal para tarefas rápidas ou remotas.

Digamos que eu tenha os dois arquivos usuais em um diretório: MyProgram.java e MyProgram.class

Se eu pedir bash para tabcomplete do prefixo de comando java M, enche diretamente para java MyProgramisso é útil. Claramente, o bash está configurado para aceitar apenas *.classe conclusões para o java comando (e sabe tirar a extensão do arquivo), ou o java comando está dizendo bash isso de alguma forma.

Eu gostaria de realizar o mesmo com um editor de texto, para que eu pudesse digitar nano M e tê-lo guia completa para nano MyProgram.java em vez de fazer uma pausa nano MyProgram., é possível dizer, lista negra *.classe da aba do nano completa?

Acima de tudo, eu estaria interessado em saber se esta é uma configuração bash ou algo do lado do programa.


2


origem




Respostas:


java possui um script de preenchimento automático separado que substitui o mecanismo de conclusão padrão. Na minha distribuição (Arch Linux), ele é instalado /usr/share/bash-completion/completions/java.

Para substituir o comportamento de conclusão de tabulação, você poderia criar um script desse tipo. Se você quer apenas ter tudo .class arquivos ignorados para cada comando, você pode definir o FIGNORE variável (por exemplo, no seu ~/.bashrc). Exemplo: FIGNORE=.class. Na página de manual do bash:

FIGNORE
  Uma lista de sufixos separados por dois-pontos para ignorar ao realizar a conclusão do nome do arquivo (consulte o texto abaixo). Um nome de arquivo cujo sufixo corresponda a uma das entradas em FIGNORE é excluído da lista de nomes de arquivos correspondentes. Um valor de amostra é ".o: ~".


3



ahh é isso que eu estava procurando, muito obrigado - lynks