Atualmente, estou escrevendo uma função Bash para converter todas as páginas man listadas por equery files <PACKAGE> | grep /usr/share/man/man
(se você não estiver familiarizado equery
é uma ferramenta usada em sistemas baseados no Gentoo do pacote app-portage/gentoolkit
) em arquivos HTML e um pouco de informação que eu preciso para fazer isso é como eu posso remover tudo, exceto o nome da página de manual, sem sua extensão de arquivo, de seu caminho completo. Eu percebo que este fraseado pode ser confuso, então vou explicar o que quero dizer com um exemplo. A execução de equery files sys-apps/portage | grep /usr/share/man/man
fornece a saída:
/usr/share/man/man1
/usr/share/man/man1/dispatch-conf.1.bz2
/usr/share/man/man1/ebuild.1.bz2
/usr/share/man/man1/egencache.1.bz2
/usr/share/man/man1/emaint.1.bz2
/usr/share/man/man1/emerge.1.bz2
/usr/share/man/man1/emirrordist.1.bz2
/usr/share/man/man1/env-update.1.bz2
/usr/share/man/man1/etc-update.1.bz2
/usr/share/man/man1/fixpackages.1.bz2
/usr/share/man/man1/quickpkg.1.bz2
/usr/share/man/man1/repoman.1.bz2
/usr/share/man/man5
/usr/share/man/man5/color.map.5.bz2
/usr/share/man/man5/ebuild.5.bz2
/usr/share/man/man5/make.conf.5.bz2
/usr/share/man/man5/portage.5.bz2
/usr/share/man/man5/xpak.5.bz2
fora desta saída, digamos que eu pegue a linha final /usr/share/man/man5/xpak.5.bz2
(que no texto que eu usei anteriormente é o caminho completo desta página man), para o propósito do meu exemplo. Então, o que eu gostaria de extrair dele, dentro de um script Bash, é xpak.5
(que é seu nome de arquivo, sem sua extensão). Como eu faria isso? Atualmente estou usando esta função Bash:
function manhtmlp {
for i in 'equery files "$1" | grep /usr/share/man/man'
do
bzcat $i | mandoc -Thtml > $HOME/GitHub/fusion809.github.io/man/${i}.html
sudo chmod 777 -R $HOME/GitHub/fusion809.github.io/man/${i}.html
done
}
na quinta e sexta linha, eu uso a notação ${i}
para indicar onde eu gostaria de poder remover o caminho completo da página de manual para o seu nome de arquivo (sem sua extensão). A entrada fornecida pelo usuário (denotada por $1
nesta função) denota o nome de um pacote, incluindo sua categoria (por exemplo, seria igual a sys-apps/portage
para o gerenciador de pacotes do Portage).
EDIT: Por que essa pergunta é diferente de Como remover caminhos de diretório para obter nomes de arquivos .
As respostas desta pergunta anterior, embora parecidas com as que gostaria, não dizem como tirar as extensões de arquivo dos nomes de arquivos, apenas o resto do caminho deles. Portanto, no exemplo de /usr/share/man/man5/xpak.5.bz2
, a resposta à pergunta mencionada forneceria uma maneira de obter xpak.5.bz2
desse caminho de arquivo completo, mas não de xpak.5
.