¿Cómo obtener una función de autocompletar general de terminal?

Soy nuevo en macOS y estoy usando macOS Sierra,

En mi Ubuntu y otros sistemas basados ​​en Linux, la terminal tiene un autocompletado que ayuda a completar los comandos y sus opciones.

Por ejemplo, para wgety otros comandos, además de la finalización del comando, después de presionar Tab2 veces, enumera todas las opciones de comando (si las hay), o en sudo wla lista todos los comandos comienzan con w

Autocompletar terminal de Ubuntu

Pero en mi Mac, solo completa los primeros comandos y no ayuda para las opciones o la segunda parte del comando como whoami in sudo whoami,

Quiero decir que no muestra una lista de todos los comandos que comienzan whodespués de presionar Tab2 veces ensudo who

[2]

Encontré algunos scripts para gitopciones en https://github.com/git/git/tree/master/contrib/completion/ , pero quiero algo que haga esto para todos los comandos y aplicaciones.

¿Hay alguna solución para eso?

Respuestas (2)

La función de finalización no proviene de ninguna Terminalaplicación ni del sistema operativo en el que trabaja: MacOS X, Linux…

Esta función la proporciona su shell. Para verificar cuál le proporciona la función de finalización que le gusta, solo obtenga qué shell está usando en Linux con:

echo ${SHELL}

Luego cambie su shell de inicio de sesión en MacOS X con:

chsh -s /bin/my_preferred_shell

para usar el que está realizando la función de finalización que desea.

Verifique que este shell exista y sea ejecutable, y lea la documentación de chsh:

ls -ld /bin/my_preferred_shell

man chsh

Para probarlo sin riesgo, no reinicies tu sesión, solo abre una nueva Terminal. En caso de error, podrá ejecutar chshuna vez más.

Gracias, entonces, ¿qué shell es compatible con esta funcionalidad? Estoy usando bash
Ejecute este comando en el entorno que le gustaría tener, no en el que no le gusta :).
La función no suele estar en el shell simple, pero en paquetes adicionales busque bash_completion, por ejemplo.

Como dijo @Mark, bash-completionel paquete agrega esta funcionalidad a la terminal.