J'utilise la commande man
tout le temps lorsque je souhaite obtenir des informations sur une commande spécifique. Mais cela ne m'aide pas beaucoup quand cette commande spécifique est un shell intégré. Par exemple:
man cd
résultats:
No manual entry for cd
Ma question est la suivante: il est possible de faire en sorte que man
fonctionne également pour toutes les commandes intégrées à Shell (telles que cd
, alias
, history
, etc.) et des mots clés (comme if
, while
, [[
, {
, etc.)?
La commande help
name__, lorsqu'elle est utilisée avec l'option -m
, peut afficher des informations sur les commandes intégrées au format pseudo-manpage. Par exemple:
help -m cd | less
affichera des informations sur la commande cd
dans un format presque identique à celui d'une page de manuel.
À partir de cette commande, vous pouvez envelopper la commande man
dans une fonction de votre fichier .bashrc
, comme suit:
man () {
case "$(type -t -- "$1")" in
builtin|keyword)
help -m "$1" | sensible-pager
;;
*)
command man "$@"
;;
esac
}
Après cela, man
fonctionnera également pour toutes les commandes et tous les mots-clés intégrés à Shell. Par exemple:
man :
affichera:
NAME
: - Null command.
SYNOPSIS
:
DESCRIPTION
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
SEE ALSO
bash(1)
IMPLEMENTATION
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
man bash-builtins
Cela contient des extraits d’aide pour les commandes intégrées, mais dans un format légèrement plus condensé que l’équivalent help
.
Vous pouvez installer des pages de manuel sur l’utilisation de système POSIX pour le développement comme,
Sudo apt-get install manpages-posix-dev
Il fournira des pages de manuel pour les commandes intégrées de Shell.
$ type cd
cd is a Shell builtin
Maintenant essaye,
$ man cd
CD(P) POSIX Programmer's Manual CD(P)
NAME
cd - change the working directory
SYNOPSIS
cd [-L | -P] [directory]
...
Cette solution fonctionne parfaitement mais est un peu une blague aussi parce que la première chose à laquelle j'ai pensé en lisant votre question était: "Qui utilise encore littéralement man depuis la ligne de commande? Tout le monde ne recherche-t-il pas simplement dans la page de manuel de son choix (pour obtenir des fonctionnalités sophistiquées comme le défilement illimité)? '. Je me suis ensuite rendu compte que les sites que je recherche généralement en Google ont les deux types de commandes, alors pourquoi ne pas les utiliser pour fournir une interface de page de manuel uniforme pour toutes les commandes. Par conséquent, ce plaisir est né.
Cela nécessite une connexion Internet pour toutes les entrées que vous n'avez pas déjà consultées au moins une fois. Il a également besoin de ces deux petites applications qui manquent dans une installation par défaut d'Ubuntu:
Sudo apt-get install tidy html2text
Celles-ci ne sont pas absolument nécessaires, mais elles aident à rendre l’apparence un peu plus agréable. Tidy nettoiera le code HTML et html2text formatera ce code en tant que texte formaté (ce qui est généralement assez trivial, car la plupart de ces sites sont déjà formatés et entourés de balises <pre>.
Maintenant, tout ce que vous avez à faire est d’ajouter ceci à la fin de ~/.profile
:
function iman() {
if [ ! -d "/usr/share/iman" ]; then
Sudo mkdir -m a=rwx /usr/share/iman
fi
if [ ! -f "/usr/share/iman/$1.html" ]; then
curl "http://unixhelp.ed.ac.uk/CGI/man-cgi?$1"| tidy -n -asxml 2>/dev/null| html2text > "/usr/share/iman/$1.html";
fi
if [ -f "/usr/share/iman/$1.html" ]; then
cat "/usr/share/iman/$1.html";
else
echo "Entry not found."
fi
}
Après vous être déconnecté puis revenu, vous devriez pouvoir taper ceci:
iman cd
et il affichera la page de manuel pour cd
.
Ceci utilise un répertoire de données (/ usr/share/iman) afin de minimiser les exigences de notre réseau (afin que cela fonctionne pour les entrées que vous avez déjà trouvées même sans connexion), ainsi que pour réduire la charge sur ce site de pages de manuel linux aléatoires. J'ai trouvé avec les entrées du système que nous voulons aussi). Si vous ne l'utilisez plus, vous voudrez le supprimer pour récupérer de l'espace disque.
Espérons que le reste est assez simple.