Hace una semana, añadí lo siguiente al final de mi .bash_profile script para configurar la finalización de tabulación para las páginas de manual:
function _man_pages()
{
local cur opts prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}" #Get the current word
prev="${COMP_WORDS[COMP_CWORD - 1]}" #Get the previous word
opts=""
if [ "$prev" = "man" ];
then
#We didn't use a section number
#This lovely regex converts from the file path to the name of the page
opts=$(find -E "/usr/share/man" -regex ".*/man[1-9n]/(${cur}.*)\.[1-9n].*$" | sed -E 's/^.*\/(.*)\.[1-9n].*$/\1/')
else
#We entered a section number
opts=$(find -E "/usr/share/man" -regex ".*/man${prev}/(${cur}.*)\.${prev}.*$" | sed -E "s/^.*\/(.*)\.${prev}.*$/\1/")
fi
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
complete -F _man_pages man
Sin embargo, cuando actualicé a El Capitán esta mañana, dejó de funcionar. He ejecutado con éxito la parte regex del script en mi propio terminal, así que estoy seguro de que siguen siendo correctos. ¿Puede alguien explicar por qué sucede esto, y/o cómo solucionarlo?
Gracias.
ACTUALIZACIÓN: Después de investigar un poco más, he descubierto que todavía funciona para la mayoría de las páginas man, pero no para man 2 o man 3. Después de buscar en la carpeta correcta que estaba antes, las carpetas man2 y man3 han desaparecido. Todavía puedo hacer "man pthread_create" y obtener resultados, así que esas carpetas deben haber desaparecido en algún lugar. Volveré cuando sepa más.