Comme tout le monde j'utilise man pour savoir comment utiliser une commande. Parfois j'ai besoin de savoir ce que fais une option / argument particulière sans avoir besoin d'ouvrir le manuel complet :
Comme le montre la capture il est possible de savoir rapidement ce que fait une option / argument.
Il existe plusieurs façons de répondre à ce besoin, en voici 3.
Solution 1 : mans
La solution que je conseille est d'ajouter dans votre machine un script bash qui répondra à la commande "mans".
De mon côté j'ai ajouté ceci dans un fichier /usr/local/bin/mans (à adapter en fonction de votre $PATH) :
#!/usr/bin/env bash usage() { cat <<EOF Name: mans Description: This script outputs a command description or an option description from the man page. Usage: mans wget -b : Show wget -b option description mans ls: Show the ls command description EOF exit 2 } if [ $# -eq 0 ]; then usage fi if [ $# -eq 2 ]; then man "$1" | col -bx | sed -n "/^ *$2/,/^$/p" else man "$1" | col -bx | sed -n "/^DESCRIPTION/,/^$/p" fi exit 0
▶️ EDIT : Matthieu a proposé en commentaire une version colorée (merci Matthieu!):
function mans() { for OPT in ${@:2} do man $1 | grep --color=always -A50 -e "^ *$OPT" -e "^ *$OPT,.*" -e "^ *-.*, $OPT" | sed -En '/^$/q;p' echo done }
Pensez bien à rendre le script exécutable :
chmod +x /usr/local/bin/mans
Essayez :
mans curl -k
Et voilà !
Solution 2 : he
Sur la même page superuser une autre personne a proposé "he" qui remplit le même rôle.
Téléchargez le script, déposez-le dans /usr/local/bin/he et rendez-le exécutable (chmod +x)
Je n'ai pas vu de différence majeure mais vu la taille du code j'imagine qu'il se comporte différemment en fonction de retour des pages de manuels
Solution 3 : un man en surbrillance
Enfin il existe une autre solution encore plus simple, découverte sur stackexchange, qui permet d'ouvrir man et de mettre en surbrillance l'option/argument recherchée.
Pour cela il faut ajouter dans votre ~/.bashrc :
function mans { man $1 | less -p "^ +$2" }
Relancer une session terminal / SSH ou bien faites :
source .bashrc
Essayez :
mans curl -k
Et voilà !
Conclusion
J'espère que l'une de ces 3 solutions vous fera gagner du temps, je suis preneur en commentaire si vous constatez des avantages à l'une plutôt qu'à une autre.
J'ai essayé d'ajouter de la couleur avec un grep mais malheureusement des caractères d'échappement sont interprétés et ça casse tout. Même chatGPT n'a pas trouvé la solution à ce problème 🙂
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
7 commentaires
N'y a t'il pas une coquille avec le Name: manop , qui serait plutôt "mans" dans cas ?
Pour la couleur avec man :
apt-get install most
puis mettre dans son .bashrc
export PAGER=$(which most)
@erreur32: bien vu c'est corrigé merci (j'avais pas mis le même nom pour mes tests). Pour most j'ai vu cette possibilité mais cela nécessite d'installer un paquet en plus et je voulais que ce soit universel
Merci pour l'idée.
J'ai ajouté le script de la solution 2 (he) sous forme de fonction dans mon bashrc.
Pour la mise en couleur j'ai ajouté un pipe optionnel vers "hl --man", que je vous conseille de découvrir ici : https://github.com/mbornet-hl/hl
@Mr Xhark:
Concernant la colorisation du man, j'avais trouvé un billet qui propose des codes de couleur afin de coloriser le "less" de la même façon que "most" :
## Colors in man pages
# https://blog.shevarezo.fr/post/2018/01/25/comment-avoir-couleurs-pages-man-linux
export LESS_TERMCAP_mb=$'\e[1;31m'
export LESS_TERMCAP_md=$'\e[1;31m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
#export LESS_TERMCAP_so=$'\e[01m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[1;32m'
@Matthieu: hello Matthieu, quelqu'un m'a soumis exactement le même code sur twitter, ça fonctionne avec man mais pas avec "mans" (si tu trouves une façon de le faire marcher je suis preneur)
Salut. La solution à ce problème n'est pas trivial en effet. Si je trouve je posterai la solution ici.
Edit:
Tiens, j'ai trouvé un petit workaround (manopts) qui se base du grep --color pour coloriser l'output :
https://unix.stackexchange.com/a/568139
J'ai donc un peu remanié la fonction pour coloriser tous les arguments (et quelques modifications mineures), et cela donne ça :
@Matthieu: Hello Matthieu c'est top je viens d'essayer ça fonctionne bien ! J'ai édité le post avec ta fonction 👍