Hace aproximadamente una semana, agregué lo siguiente al final de mi script .bash_profile para configurar la finalización de pestañas 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].*$//')
else
#We entered a section number
opts=$(find -E "/usr/share/man" -regex ".*/man${prev}/(${cur}.*)\.${prev}.*$" | sed -E "s/^.*\/(.*)\.${prev}.*$//")
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 de expresiones regulares del script en mi terminal, por lo que estoy seguro de que siguen siendo correctos. ¿Alguien puede explicar por qué sucede esto y / o cómo solucionarlo?
¡Gracias!
ACTUALIZACIÓN: Después de investigar un poco más, descubrí 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 desaparecen. . Todavía puedo hacer "man pthread_create" y obtener resultados, por lo que esas carpetas deben haberse ido a algún lugar. Volveré cuando sepa más.