Script Bash Linux. Créer le manuel en PDF d'une commande

Si comme moi, vous avez tendance à utiliser le terminal et ses logiciels en lignes de commandes, alors vous devriez avoir parfois recours à leur manuel. Ces manuels fournissent des explications sur les options disponibles.

Exemples

Pour lancer le gestionnaire de profils de firefox, dans un terminal, on rajoute "-ProfileManager" (sans guillemets)

firefox -ProfileManager

Pour lire le manuel d'un logiciel, on utilise "man".

man firefox

On voit donc que dans son manuel, il est recommandé d'ajouter l'option "-no-remote" si, une instance est en cours d'utilisation.

Besoin de plus de praticité

Plutôt que de devoir consulter ces manuels directement dans un terminal à chaque fois que l'on s'interroge, et afin de les avoir toujours sous les yeux, j'ai eu envie de créer un script - sous la forme d'une simple fonction - pour les convertir en PDF. Format pratique aussi, si on a besoin de les imprimer.

Pré-requis

Ce script se place dans le fichier de son profil bash, que l'on doit créer à la racine de son dossier personnel, soit ~/.bash_aliases ou plutôt dans mon cas ~/.bash-functions (les 2 fonctionnent...). Une fois le script copié, n'oubliez pas de redéclarer les changements au système avec cette commande pour qu'il puisse les prendre en compte.

. ~/.bash_aliases

Fonctionnalités

Ce script crée le dossier "man2pdf" dans le dossier "Documents" personnel si, il n'existe pas déjà. Vous pouvez le changer en modifiant la variable "foldermanpdf". Il est aussi possible de juste créer le manuel sans l"ouvrir. Enfin, si, il n'y a pas de manuel disponible, grâce au code de retour 16 de la commande, le script s'arrête.

    function manpdf {
        man "$1" > /dev/null
        if [[ ! "$?" == 16 ]] ; then   
            echo '-> Création du manuel en PDF de "'"$1"'"';
            foldermanpdf="$HOME/Documents/man2pdf";
            [ -d "$foldermanpdf" ] || mkdir -p "$foldermanpdf";
            man -t "$1" | ps2pdf - "$foldermanpdf"/manpage-"$1".pdf;
            echo '-> "manpage-'$1'.pdf" se trouve dans '$foldermanpdf;
            [ "$2" == "o" ] && xdg-open "$foldermanpdf"/manpage-"$1".pdf>/dev/null 2>&1;
        fi
    }

Utilisation

Dans un terminal, lancez la commande suivante. Remplacez firefox par cat, find, nemo, vlc ou ce que vous voulez. Si le manuel n'est pas disponible, on sera juste averti.

    # Création du manuel PDF de firefox sans l'ouvrir
    manpdf firefox

    # Création du manuel PDF et l'ouvrir
    manpdf firefox o