Expandir o comentário de @SamiLaine para usar man
- uma das razões pelas quais não gostei, foi porque eu esperava que fosse tedioso configurar, e acho que este post mostrará isso; mas parece funcionar. Primeiro, alguma introdução pode ser encontrada aqui:
- HowTo: Linux / UNIX Crie uma Manpage - nixCraft menciona seções, sintaxe, etc.
-
Criando páginas de manual personalizadas | Diário do Linux menciona
txt2man
(sudo apt-get install txt2man
) - 10.04 - Como adiciono um diretório ao MANPATH ou INFOPATH? - Pergunte ao Ubuntu
Primeiro, vamos criar o diretório e adicioná-lo ao MANPATH:
mkdir ~/myreminderhelp
echo 'MANPATH=$MANPATH:'$(echo ~/myreminderhelp) >> ~/.bashrc
Vamos testar se ele é encontrado: feche o terminal, abra um novo terminal; e depois:
manpath -d 2>&1 | grep myrem
Infelizmente, isso não informa nada para mim; mesmo se echo $MANPATH
disser :~/myreminderhelp
.
Experimentando com% global/etc/bash.bashrc
(após excluir a linha no local ~/.bashrc
e reiniciar o terminal novamente):
sudo bash -c "echo 'MANPATH=$MANPATH:'$(echo ~/myreminderhelp)" # check home dir printout
sudo bash -c "echo 'MANPATH=$MANPATH:'$(echo ~/myreminderhelp) >> /etc/bash.bashrc"
Reinicie o terminal; ainda manpath
não reporta este diretório. Vamos agora tentar isso:
sudo bash -c "echo 'MANDATORY_MANPATH '$(echo ~/myreminderhelp) >> /etc/manpath.config"
Feche e reabra o terminal novamente; finalmente, conseguimos:
$ manpath
/usr/local/man:/usr/local/share/man:/usr/share/man:/media/extern/texlive/2011/bin/i386-linux/man:~/myreminderhelp
Na verdade, depois de encontrar isso, apaguei a linha de /etc/bash.bashrc
e manpath
ainda relata o diretório. Então, eu acho que editar /etc/manpath.config
é tudo que é necessário.
Ok, vamos criar um exemplo de arquivo de lembrete personalizado aqui:
echo "Just a bit of a reminder...
Use nmcli con --help" >> ~/myreminderhelp/nmcli-reminder.txt
Em seguida, use txt2man
para obter um arquivo man
formatado e gzip:
cat ~/myreminderhelp/nmcli-reminder.txt | txt2man > ~/myreminderhelp/nmcli-reminder.1
gzip ~/myreminderhelp/nmcli-reminder.1
Reinicie o terminal novamente, tente digitar man nm
e pressione TAB - autocompletion mostra nmcli-reminder
não encontrado ...
Então, vamos tentar colocar nossos arquivos em uma subpasta man
section; os links acima indicam a seção 7 seria apropriada; então:
mkdir ~/myreminderhelp/man7
mv ~/myreminderhelp/nmcli-reminder.* ~/myreminderhelp/man7/
tree ~/myreminderhelp # to check - ok
Reinicie o terminal novamente; tente digitar man nm
e pressione TAB - autocompletion finalmente funciona:
$ man nmcli # and here press TAB:
nmcli nmcli-reminder
... mas agora temos esse problema:
$ man nmcli-reminder
No manual entry for nmcli-reminder
Droga. Pode ser que atualmente, nosso arquivo seja nmcli-reminder.1.gz
indicando a seção 1 - vamos renomeá-lo:
mv ~/myreminderhelp/man7/nmcli-reminder.1.gz ~/myreminderhelp/man7/nmcli-reminder.7.gz
man nmcli-reminder
... e finalmente o comando man
funciona!
Portanto, para este caso de uso, provavelmente é melhor manter os arquivos de origem .txt
diretamente em ~/myreminderhelp/
e, em seguida, gerar páginas man na subpasta apropriada - como em:
$ tree ~/myreminderhelp/
~/myreminderhelp/
├── man7
│ └── nmcli-reminder.7.gz
└── nmcli-reminder.txt
... os comandos de geração apropriados para este ser:
cat ~/myreminderhelp/nmcli-reminder.txt | txt2man > ~/myreminderhelp/man7/nmcli-reminder.7
gzip ~/myreminderhelp/man7/nmcli-reminder.7
E aqui está um script ~/myreminderhelp/buildreminders.sh
:
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
for ix in $DIR/*.txt; do
bx=$(basename $ix)
isn=${bx%%.txt}
echo Processing $isn;
set -x
# txt2man -t "$isn" -s 7 $ix > $DIR/man7/${isn}.7
pandoc -f markdown -t man -s -o $DIR/man7/${isn}.7 $ix
gzip --force $DIR/man7/${isn}.7
{ set +x; } 2>/dev/null
done
tree -a $DIR
EDIT: Acontece que é muito difícil obter txt2man
deixando o código-fonte literal sem formatação, já que ele tende a extrair informações automaticamente como man
(sub) seções, etc. Eu modifiquei o script acima para use pandoc
(via WritingManPages - HerzbubeWiki ) - pelo menos com pandoc
com uma entrada Markdown, você tem algum controle sobre o que é literal texto pré-formatado, e o que não é ...
No entanto, essas duas ferramentas irão recuar o conteúdo, como é típico para uma página man
(já que os títulos das seções não são recuados, o resto do conteúdo do texto como em parágrafos, é). E eu não tenho certeza se eu acabo gostando demais ...