Cómo ocultar un programa de la finalización de tabulación de Linux

2

Tengo una cuenta en una máquina compartida y no puedo acceder a / usr / bin, donde hay muchos programas que nunca uso.

Me gustaría tabular para ignorar muchos de estos programas. Por ejemplo, me gustaría on<TAB>completar oneprog, pero hay otras coincidencias.

~> on
on_ac_power           oneprog          onto2vocabularyclass

¿Hay alguna manera de ocultar las otras dos coincidencias, sin crear un espejo de / usr / bin?

Samizdis
fuente
1
Si no puede acceder, /usr/binsimplemente elimínelo de su $PATHy luego bash no debería completarse
Josh

Respuestas:

1

Asumiendo Bash ...

Puede definir sus propias reglas de autocompletar para opciones / argumentos, utilizando complete. Puede definir suficientes nombres de archivo que se ignoran en los argumentos al exportar la variable $FIGNORE.

Sin embargo, no creo que pueda alterar la forma en que Bash resuelve los nombres de los programas.

Podría, por supuesto, aliasel programa que desea ejecutar, por lo que no tiene que escribir tanto:

[me@host ~]$ alias on=oneprog
[me@host ~]$ on

Usted podría (si se sentía tonta) alias el Bash builtin, commandy utiliza completepara definir los argumentos está dispuesta a aceptar (la lista de programas bonito), y luego recuerda siempre que escriba su alias antes de su comando real.

[me@host ~]$ alias run=command
[me@host ~]$ complete -W "ls cd" run
[me@host ~]$ run ls

Consulte también Cómo hacer que el autocompletado ignore una finalización específica .

jimbobmcgee
fuente
Gracias, ese enlace fue especialmente útil. Por mucho que normalmente sigo presionando, mi reacción a "no lo hagas, solo usa un alias" parece ser idéntica al autor de la pregunta vinculada, que finalmente aceptó la respuesta.
Samizdis