Circa una settimana fa, ho aggiunto quanto segue alla fine del mio script .bash_profile, quindi imposta il completamento della tabulazione per le pagine man:
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
Tuttavia, quando mi sono aggiornato a El Capitan questa mattina, ha smesso di funzionare. Ho eseguito con successo la parte regex dello script nel mio terminale stesso, quindi sono fiducioso che siano ancora corretti. Qualcuno può spiegare perché questo sta accadendo e / o come risolverlo?
Grazie!
AGGIORNAMENTO: Dopo aver fatto un po 'più di scavo, ho scoperto che funziona ancora per la maggior parte delle pagine man, solo non man 2 o man 3. Dopo aver guardato nella cartella corretta era prima, le cartelle man2 e man3 sono scomparse . Sono ancora in grado di fare "man pthread_create" e ottenere risultati, quindi quelle cartelle devono essere andate da qualche parte. Tornerò quando ne saprò di più.