Ouvrir les pages man directement dans son éditeur de texte ou dans un document pdf

Sommaire

  1. Ouvrir les pages man dans son éditeur de texte préféré
  2. Ouvrir les pages man dans un document PDF

Ouvrir les pages man dans son éditeur de texte préféré

Bonjour,

Avant-hier, j’a acheté cette revue allemande que j’aime beaucoup car elle contient tout un tas d’astuces qui font la joie des gouiks de mon espèce, toujours à l’affût de quelque nouveauté pour égayer leur quotidien.

linux_welt

Or, j’ai trouvé quelque chose de sympa et de simple à mettre en oeuvre : la possibilité d’ouvrir les pages man, non pas dans  le terminal mais directement dans son éditeur de texte favori. Le confort de lecture s’en trouve grandement optimisé.

Pour ce faire, il suffit de rajouter dans le fichier caché ~/.bashrc, les lignes de code suivantes :

man()
{
/usr/bin/man $* > ~/temp.txt
if [ -s ~/temp.txt ]; then pluma ~/temp.txt
fi
}

Explication du code

  • Ligne N° 1 : Création de la fonction man
  • Ligne n° 3 : Le résultat de la commande man  + paramètre(s) que l’on entre dans le terminal est envoyé dans un fichier temporaire ~/temp.txt. Par exemple, si j’entre la commande man sudo, le manuel sudo sera envoyé dans le fichier ~/temp.txt.
  • Ligne n° 4 : Si le fichier ~/temp.txt est supérieur à 0 byte, en clair s’il n’est pas vide, alors prière d’ouvrir ce dernier avec l’éditeur pluma. Ai-je besoin de préciser que si votre éditeur est gedit, alors il faut modifier cette ligne de code en conséquence?

Voilà, donc si vous entrez man sudo dans votre terminal, au bout de quelques secondes, c’est votre éditeur favori qui va s’ouvrir et afficher les pages du manuel sudo.

Ouvrir les pages man dans un document PDF

La technique précédente a quelques inconvénients :

  • Le terminal se retrouve bloqué car il reste ouvert (voir commentaires à la suite de l’article),
  • Deux posteurs m’ont fait la remarque qu’un document PDF est plus agréable que l’éditeur de texte en terme de confort de lecture… sauf que les fonctions recherche et annotations ne fonctionnent pas si vous faites le choix d’envoyer les pages du manuel directement dans un  fichier pdf temporaire. Je me suis donc creusé les méninges et j’ai trouvé la solution. Avec la commande sudo apt install, Il faut installer au préalable pandoctexlive et texlive-xetex puis entrer ces lignes de code dans le fichier ~/.bashrc :
man()
{
/usr/bin/man $* > ~/temp.md
if [ -s ~/temp.md ]
then
    pandoc -s temp.md -f markdown -t latex -o temp.pdf
    evince ~/temp.pdf & exit
fi
}

Vous obtenez un document PDF agréable à lire, avec les fonctions recherche et annotations parfaitement fonctionnelles.

temp.pdf_155

Explication du code

  • Ligne N° 1 : Création de la fonction man
  • Ligne n° 3 : Le résultat de la commande man  + paramètre(s) que l’on entre dans le terminal est envoyé dans un fichier temporaire de type markdown ~/temp.md. Par exemple, si j’entre la commande man sudo, le manuel sudo sera envoyé dans le fichier ~/temp.md.
  • Ligne n° 4 à 6 : Si le fichier ~/temp.md est supérieur à 0 byte, en clair s’il n’est pas vide, alors prière de convertir ce dernier en pdf grâce à pandoctexlive et texlive-xetex.
  • Ligne n° 7 : Le document obtenu est ouvert avec evince. Je libère le terminal grâce à exit.

Chères lectrices et chers lecteurs, je vous souhaite à toutes et à tous un joyeux Noël dans la paix et l’harmonie.

23 commentaires sur “Ouvrir les pages man directement dans son éditeur de texte ou dans un document pdf

  1. Je trouve la mise en forme PDF plus facile à lire avec evince ou n’importe quel autre lecteur PDF

    man() {
      /usr/bin/man -t $* > ~/temp.pdf && evince ~/temp.pdf
     }

      1. Bon alors, en installant pandoc, texlive et texlive-xetex, ça fonctionne. Voici mon code :
        man()
        {
        /usr/bin/man $* > ~/temp.md
        if [ -s ~/temp.md ]
        then
        pandoc -s temp.md -f markdown -t latex -o temp.pdf
        evince ~/temp.pdf & exit
        fi
        }

        Je créé un fichier markdown, je le convertis en pdf et je libère le terminal. La fonction recherche et annotations du document pdf fonctionne.
        Le compte est bon.

      2. votre solution ne change rien chez moi (Fedora 28, DE Mate, atril comme lecteur de PDF)
        J’ai essayé la solution d’Erick, pareil (voire pire, cf commentaire associé) 🙁
        Dommage, parce que la mise en page pdf combinée à la possibilité de recherche te copier-coller semblait très alléchante

  2. Pour créer du PDF, il vaut mieux partir du fichier source de la page de manuel et utiliser la commande groff qui sait interpréter le format nroff. Le résultat sera de bien meilleure qualité.
    Par exemple:
    zcat $(man -w $1) | groff -man -T pdf > /tmp/man.pdf
    permet de créer la page de manuel passée en paramètre en format pdf (en utilisant -T html, au aurait la page en HTML 😉

    1. Bonjour Erick,
      Merci pour votre commentaire. En effet, votre commande fonctionne très bien dans une fonction man().
      Seul souci, et j’ai le même problème avec mon code, cela ne fonctionne pas avec la commande man man, c’est-à-dire le manuel du manuel.
      Je pense que c’est du au fait que la fonction s’appelle man(). Bon, c’est un détail qui n’est pas très important mais je ne sais pas comment le résoudre.
      Cordialement.
      Benoît

      1. Le fichier DESC auquel il est fair référence ici est le fichier:
        /usr/share/groff/current/font/devpdf/DESC
        qui n’a pas l’air d’exister chez vous.

        Peut-être faut il installer d’autres paquets pour avoir tous les drivers de sortie sur votre distribution.

        Chez moi, le répertoire /usr/share/groff/current/font/ contient les répertoires suivants: devX100 devX100-12 devX75 devX75-12 devascii devdvi devhtml devlatin1 devlbp devlj4 devpdf devps devutf8

  3. Très intéressant, merci pour l’astuce. Par contre c’est un peu dommage d’utiliser le exit car ça ferme complètement la fenêtre du terminal (enfin chez moi). Il n’y aurait pas un autre moyen pour garder la main sur le terminal? Surtout qu’en général quand on fait un man c’est qu’on est en train de faire quelque chose dans ledit terminal.

    1. Malheureusement, Evince génère un commentaire de bug qui empêche l’utilisation du terminal et je n’ai pas trouvé la solution à ce problème, à part utiliser tilix qui est un terminal multifenêtres.

    1. Bonjour Guillaume,

      Merci pour ton commentaire que je publie malheureusement avec quelques jours de retard. Pour une raison que j’ignore, celui-ci se trouvait dans ma boite de commentaires indésirables 🙁 J’ai rectifié l’erreur.

      Cordialement,

      Benoît

  4. Très intéressant d’ouvrir un man dans gvim en gardant le terminal disponible, merci
    Mais, pour éviter une collision entre deux « man » s’ouvrant dans le même fichier ~/temp.txt , j’ai édité ta fonction (dans mon .zsh_functions) ainsi :

    # ouvrir les man dans gvim
    man()
    {
    /usr/bin/man $* > /tmp/$*.txt
    if [ -s /tmp/$*.txt ]; then gvim -Rg /tmp/$*.txt
    fi
    }

  5. Les commandes
    man -t find > find.ps ,puis ps2pdf find.ps
    créent aussi un pdf, (peut-être pas aussi beau qu’avec LaTeX ?)

    Il existe aussi gropdf , pour passer directement du format groff (des man pages) au pdf, mais je ne l’ai jamais utilisé.

    merci pour ce blog que je découvre.

    1. Super, je n’avais pas vu l’option -t. Du coup, on peut même faire
      man -t -Tpdf $1 > $1.pdf
      puisque -t lance groff. Du coup, plus besoin de convertir de ps vers pdf.
      Cool

Répondre à Erick Annuler la réponse.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.