Script en bash pour remplacer le traditionnel lecteur man

Post Reply
Message
Author
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

Script en bash pour remplacer le traditionnel lecteur man

#1 Post by musher0 »

Bonjour,

J'en entends déjà me dire :
« Bah, les pages man, on n'a pas besoin de ça, on s'débrouille sans ! »

Sauf que pour tirer le maximum d'un utilitaire, il faut peut-être l'avoir étudié plus
à fond que pour un usage « système D ». Et puis, c'est la chose à faire avant
de jeter le bébé avec l'eau du bain, si on est un tant soit peu conscienceux !

Les gens aiment jeter leurs choux gras, c'est bien connu. C'est pas un petit
script comme celui-ci qui va inverser la tendance. Mais qui sait ? Je crois pour ma
part qu'il faut exploiter à fond les applis et exécutables connus avant de céder à la
tentation de la nouveauté.

Donc, Ici mes colocuteurs ;) trouveront un script en bash pour remplacer le
traditionnel lecteur man.

Cette version peut non seulement
-- lire les pages man sur votre ordi mais aussi aller en ligne en chercher sur le site
de J.-P. Barralis.

(Je vous communique aussi l'adresse d'un site de pages man en anglais parce
que le site de M. Barralis ne contient pas tout, toutes les pages man n'ayant pas
encore été traduites, malheureusement :.)

-- offre d'afficher la page à simple interligne au format txt, via less, ou à double
interligne, la mise en forme habituelle en html;

-- applique des codes ANSI aux messages.

Bonne fin de journée !
#~~~~~~~~~~~~~

Code: Select all

#!/bin/bash
# /bin/man-m0-0.3a.sh
# Avec lien symbolique à | With symbolic link at | /bin/man
# © Christian L'Écuyer, Gatineau (Qc), Canada, 12-14 janv. 2019.
# (Alias musher0 [forum Puppy].) GPL3.
# Notes au bas du script. | Notes at bottom of script.
#~~~~~~~~~~~~~
Z="" # Z="`busybox man -w $1`" # Couci couça. | So-so.
Z="`whereis $1 | awk '{ print $NF }'`" # Permet un meilleur contrôle.

if [ "$?" -gt "0" -o "${Z: -2}" != "gz" ];then # Vérification # Important
     CoLoR="bd AntiqueWhite2 -bg AntiqueWhite4 -fg white"
     case "${LANG:0:2}" in fr)MsG1="    Il n'y a pas de manuel pour cet utilitaire.
S.v.p. essayer avec 'utilitaire --help'." ;;
          en|*)MsG1="    There is no manual for this utility.
Please try with 'utility --help'." ;;
     esac
     bcm -u /root/my-documents/icons/emblem-important.png -a 1 -g c:c -d 5 -b "#000000FF" -c "#0c0c0c8F" -t "<span font='AkizaSans Bold Italic 18' color='white' gravity='north' gravity_hint='line'>$MsG1</span>"

     case "${LANG:0:2}" in # Option d'aller en ligne
          fr)MsG2="\n\tOu taper 'I' pour un index en ligne.\n\t    (Toute autre touche quitte.)"
               AdreS="http://jp.barralis.com/linux-man" ;;
          en|*)MsG2="\n\tOr type I for an online index.\n\t    (Any other key exits)."
               AdreS="http://man7.org/linux/man-pages" ;;
     esac;echo -e "\e[1m\e[36m${MsG2}\e[0m"
     OnLinE="";read OnLinE
     case "${OnLinE}" in i|I)defaulthtmlviewer "${AdreS}" ;;
     esac;exit

else NoM="`basename $Z`" # Page man sur place
     case "${NoM: -2}" in gz)gunzip -Nfkq $Z
          NoM="${NoM:0: -3}";Z="${Z:0: -3}" ;;
     esac
     man2html $Z | awk NF > /tmp/$NoM.html

     case "${LANG:0:2}" in fr)MsG3="     Lire au format txt (taper 'T'; simple interligne) ou
             html (taper 'H'; format d'origine) ?
                    (Ctrl-C pour quitter)" ;;
          en|*)MsG3="        Read in txt (type 'T'; single spaced) or
     html format (type 'H'; original line spacing)?
                    (Ctrl-C to exit)" ;;
     esac;echo -e "\e[1m\e[36m${MsG3}\e[0m"

     R="";read R # Visionnement
     case $R in t|T)links -dump /tmp/$NoM.html | awk NF > /tmp/$NoM.txt
               exec visionner-avec-less4c.sh /tmp/$NoM.txt ;;
          h|H)MenU="menu-font-size 20 -menu-background-color 0x8B8378 -menu-foreground-color 0xFFFAF0"
               ScrolL="scroll-bar-area-color 0x8B8378 -scroll-bar-bar-color 0xFFFAF0"
               exec links -g -$MenU -$ScrolL /tmp/$NoM.html ;;
     esac

     [ "${Z:0: -1}" != "z" ] && rm -f $Z # Fin
     case "${LANG:0:2}" in fr)MsG4="\n     Taper 'O' (oui) afin de conserver cette page
     dans Docs/Linux pour référence rapide ?\n     (Toute autre touche quitte.)" ;;
          en|*)MsG4="\n     Type 'Y' (yes) to keep this page in
     Docs/Linux for easy reference?\n     (Any other key quits.)" ;;
     esac;echo -e "\e[1m\e[36m${MsG4}\e[0m"
     R="";read R
     case $R in o|O|y|Y)[ -d /root/my-documents/Docs-Linux ] || mkdir -p /root/my-documents/Docs-Linux
          mv /tmp/$NoM.* /root/my-documents/Docs-Linux/ ;;
     esac;rm -f /tmp/$NoM.*
fi;exit
#~~~~~~~~~~~~~ Requiert | Requires --
awk, basename, bcm (vovchik), man2html, whereis; links.
#~~~~~~~~~~~~~ Usage --
man-m0.sh $1, OU | OR man $1
Ex. : man-m0.sh rsync, OU | OR man rsync
#~~~~~~~~~~~~~ Note - FR --
Fonctionne sur slacko-6.9.9.9 et slackster-700. Non testé sur un autre Puppy.
Affiche les pages man sur votre ordi, et non pas celles en ligne.
#~~~~~~~~~~~~~ Note - EN --
Works on slacko-6.9.9.9 and slackster-700. Untested on other Pups.
Displays the man pages on your computer, not those on line.
#~~~~~~~~~~~~~ Licence / License -- <https://opensource.org/licenses/GPL-3.0>
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, version 3 of the License or (at your option) any later version.
     This program is distributed in the hope that it will be useful, but
WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
for more details.
     You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
#~~~~~ FR --
Ce programme est libre : vous pouvez le redistribuer ou le modifier selon les
termes de la Licence Publique Générale GNU publiée par la Free Software
Foundation, version 3 ou ultérieure, à votre choix.
    Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS
GARANTIE explicite ni implicite, dont celles de commercialisation ou
adaptation à un but précis. Pour plus de détails, se reporter au texte
officiel à <http://www.gnu.org/licenses/>, à sa traduction à
<http://www.linux-france.org/article/these/gpl.html> et, pour une explication
en français, à <https://fr.wikipedia.org/wiki/Licence_publique_générale_GNU>.
#~~~~~~~~~~~~~
Attachments
links-as-man-page-reader.jpg
(170.51 KiB) Downloaded 197 times
man-m0-0.3.pet
(3.34 KiB) Downloaded 118 times
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

User avatar
Argolance
Posts: 3767
Joined: Sun 06 Jan 2008, 22:57
Location: PORT-BRILLET (Mayenne - France)
Contact:

#2 Post by Argolance »

Bonsoir,
Merci mais pourquoi pas, tout simplement, soit avec links soit avec n'importe quel navigateur, se rendre directement aux pages man, ou même à cette page, où sont listées la plupart des commandes utilisateur?
:arrow: http://manpagesfr.free.fr/man/man1/Index.1.html
ou carrément en console:

Code: Select all

links http://manpagesfr.free.fr/man/man1/Index.1.html
?

Cordialement.
Last edited by Argolance on Wed 16 Jan 2019, 09:51, edited 1 time in total.

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#3 Post by musher0 »

Allô, Argolance.

Quelques réponses :
-- Si on a des pages man sur son ordi, pourquoi utiliser de la bande passante ?
Pour ma part, mon FSI m'impose un quota par mois. Je ne dois pas être le seul sur la planète dans ce cas. Alors j'essaye d'économiser par ci par là.

-- Le site de J.-P.Barralis offre beaucoup de pages man de type 1 à 9. Barralis n'a
pas encore traduit toutes les pages,comme j'ai dit, mais manpagesfr.free.fr n'offre
que les pages de type 1.

-- Utiliser links en mode console ou graphique, c'est au choix. On n'a qu'à enlever le
paramètre < -g > sur la ligne de commande de links.

-- Mon script offre l'option d'enregistrer les pages dans un format texte à simple
interligne, c'est-à-dire compact et facile à lire dans son éditeur ou son lecteur de
texte préféré.

-- Ce script est mieux que
--- le busybox man, qui fonctionne mal
--- l'utilitaire man, absent de nos Puppys
--- l'utilitaire pman de BarryK et al., qui date de quelques années, mais qui
malheureusement ne fonctionne pas (ou plus ?) sur la slacko-6.9.9.9.

Alors j'ai tenté de doter les utilisateurs d'un outil un peu convenable.

À+
Last edited by musher0 on Sun 20 Jan 2019, 21:51, edited 1 time in total.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

oui

#4 Post by oui »

musher0 wrote: -- Mon script offre l'option d'enregistrer les pages dans un format texte à simple
interligne, c'est-à-dire compact et facile à lire dans son éditeur ou son lecteur.préféré.
ça c'est une réelle force car on peut alors facilement faire "mouliner" la page en anglais par google translation... et d'y rajouter ses propres annotations (des exemples utiles de codage spécifique etc.)

par contre, les pages déjà sur le disque dur, si elles ne sont pas de la même version que celle installée, attention, c'est un vrai polson...

enfin une dernière force, pour les gens comme moi qui se sont totalement habitués à la version anglophone de Puppy, cela permet d'avoir la manpage en français, si existante. ça aussi c'est bien (même si pour Christian, parfaitement bilingue, cela ne joue aucun rôle pratique! Pour les autres, par contre, souvent, si...)

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#5 Post by musher0 »

@oui.

"... ça ne joue aucun rôle pratique ...»

Je comprends bien l'anglais, mais quand même, j'suis pas un « assimilé » ! Si la page
man existe en français, je vais sauter d'ssus en premier !!!

À bientôt.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)

Post Reply