J'ai finalement eu marre quand on veut lire bash « s read
et de l' -s
option avec man bash
. J'ai finalement trouvé le bon endroit (vers la ligne 4500), mais c'était frustrant comme d'habitude, car les recherches /read
et même les /\s-s\s
recherches ont beaucoup trop de correspondances.
La question est donc la suivante: comment lire efficacement de longues pages de manuel ou obtenir les mêmes informations d'une autre manière, localement ? À titre d'exemple spécifique, comment accéder à la documentation pertinente après avoir vu read -s pwd
dans un script shell? Une bonne réponse pourrait être un extrait de script shell, ou un indice sur un outil et la façon dont il est utilisé, ou quelque chose d'autre, tant qu'il aide à trouver le bon endroit pour lire.
Remarque: Je ne tague pas avec bash parce que je veux que la question porte sur la lecture des pages de manuel en général, même si c'est probablement la page de manuel la plus fréquemment rencontrée.
man
page j'utilise un petit script que je laisse sur mon panneau supérieur. yuugian.com/demo/gkman.txt Partagez et profitezbash
lui-même: tout comme vous, j'ai moi aussi surtout besoin de laSHELL BUILTINS
partie du manuel, qui se situe vers la ligne 3500 . Donc, sachant cela, la prochaine fois, je dirais simplementman bash
, puis redescendrai de 66%, en tapant66%
, puis plusieurs fois PgDn et j'y serai. Bien que j'aie choisi 66 parce qu'il peut être mémorisé comme "Route 66" , c'est en fait un peu plus que cela, mais pas si facile à mémoriser à moins que ce ne soit le début de votre téléphone #, etc. :) Au moins la "Route 66" "est universel et connu dans le monde entier.Réponses:
Pour obtenir rapidement de l'aide sur un module intégré Bash, utilisez
help
:c'est ce que tu veux.
Pour un formatage semblable à une page de manuel, utilisez
ou, mieux encore,
Si vous insistez toujours pour le rechercher dans la page de manuel, je trouve que ce qui m'amène rapidement à l'explication d'une commande est
Cela fonctionne car lorsqu'une commande est expliquée pour la première fois, son nom est légèrement en retrait depuis le début de la ligne. Dans le cas particulier de
read
, cela demande un peu de navigation avant d'accéder à laread
documentation réelle car (pour des raisons évidentes) le mot "lire" est répété beaucoup tout au long de la page de manuel. Le [[] signifie faire correspondre un [qui précède généralement les paramètres facultatifs. (Je laisse généralement de côté / ^ \ s * et je fais simplement / <commande intégrée> [[])Une autre alternative
Si le changement de format ne vous dérange pas, vous pouvez convertir votre page de manuel en fichier DVI ou PDF:
ou
Bien sûr, étant donné un document DVI ou PDF, vous pouvez ensuite effectuer une recherche de texte facilement.
la source
help
super, je me demande comment je n'en ai jamais entendu parler ... ceps2pdf
n'est pas très utile car il ne peut pas (apparemment) créer d'index d'aucune sorte.Approche 1
man bash
puis/read \[
alors/-s
Approche 2
Vous pouvez essayer un outil open source pour expliquer les arguments de la ligne de commande appelé expliquehell .
Il peut être utilisé localement. Lisez la documentation sur https://github.com/idank/explainshell
Avertissements: fonctionne généralement, mais uniquement avec les commandes trouvées dans le référentiel de pages de manuel d'Ubuntu
Dans votre cas, il ne peut pas reconnaître l'
-s
interrupteurread -s pwd
.Approche 3
J'ai trouvé un autre outil qui semble prometteur mais qui ne fonctionne pas sur mon système.
expliquer: documentation courte pour les commandes Unix
la source
/-s\b
éviter les coups comme--some-other-command
(tout en trouvant des chaînes comme-s,
, que vous n'obtiendrez pas si vous recherchez/-s
avec un espace).Ce que je fais habituellement dans ce cas, c'est juste lancer
man
, rechercher l'en-SHELL BUILTIN COMMANDS
tête, puis rechercher le builtin, c'est-à-direcependant, en bash, vous pouvez faire
ou, selon le système, soit
En général, j'ai un script appelé
he
("aide courte") pour ce faire. Vous le feriez comme ceci:la source
desc
àhe
. github.com/mikelward/scripts/blob/master/heIl n'y a pas de moyen générique pour trouver des informations dans une page de manuel, pas plus qu'il n'y a de manière générique pour trouver des informations dans un livre. Cela dépend de ce que vous recherchez.
Lorsque vous recherchez des informations sur un shell intégré, vous pouvez rechercher le builtin au début d'une ligne sauf pour l'indentation, et suivi d'un espace: rechercher
^ *read␣
(par exemple, type/^ *read␣
Enter) (␣
est un espace). Cela fonctionne avec dash, pdksh, mksh et bash. La page de manuel de Zsh est divisée, vous devez donc lire lazshbuiltins
page de manuel. Ksh93 a des symboles spéciaux devant les noms de certaines fonctions internes, vous devez rechercher^ *†*␣
en UTF-8 ou^ *-*␣
en ASCII. Il y a quelques faux positifs mais cela vous amènera rapidement à la bonne ligne. La recherche^ *read($| [-[])
réduit le nombre de faux positifs.Vous pouvez accélérer la recherche en indiquant à votre téléavertisseur où vous voulez aller. Par exemple,
PAGER='less "+/^ *read \["' man bash
ouvre la page de manuel bash sur la description de la fonctionread
intégrée. Vous pouvez en faire une fonction:la source
mksh
page de manuel,/ read
(deux espaces, nom de commande, un espace) trouve généralement le bon endroit (c'est une astuce que j'utilise moi-même et qui est rapide à taper). Merci d'avoir posé des questions à ce sujet; Je mettrai des références (quelque peu) distinctes pour tous les utilitaires inclus avec mksh sur mon TODO./ read
tendance à avoir beaucoup de faux positifs lorsque votre implémentation man justifie le texte.Pour accéder directement à la section SHELL BUILTINS COMMANDS de la page de manuel bash, je définis l'alias suivant dans mon
$HOME/.bash_aliases
fichier.la source
Juste pour offrir une autre alternative, si vous préférez utiliser un navigateur Web qui vous permet de rechercher facilement dans la page actuelle, vous pouvez utiliser quelque chose comme man.cgi utilisé sur freeBSD.org qui vous permet également de visualiser les pages de manuel de différents systèmes pour voir comment ils diffèrent. J'ai vu similaire sur d'autres sites, alors attendez-vous à d'autres variations.
Le lien d'aide sous apropos offre quelques informations pour obtenir une copie du script à mettre sur votre propre serveur avec des liens pour télécharger les collections de pages de manuel.
la source
Je me suis mis à créer une fonction bash à cet effet. Cet extrait peut être par exemple collé à la fin de
~/.bashrc
:Les commentaires expliquent un peu ce qu'il fait. La chaîne de recherche par défaut, en particulier, recherche un mot donné depuis le début des lignes, en sautant l'espace initial. Exemples:
Remarque: Ce script n'a pas de concept de sections de page de manuel ... Je verrai si je modifie cela plus tard, mais la définition de
MANSECT
la variable d'environnement de man aide.la source
trap 'rm -f "$tmp"'
man "$1" | vim -R - "+/$2"
quelque chose de similaire?$2
, donc non.trap
. Je n'ai pas trouvé de moyen propre de le faire dans une fonction sans créer de sous-shell.+/REGEX
Pour rassembler les éléments de l'autre discussion , voici une fonction rapide que vous pouvez laisser dans votre
.bashrc
qui vous amènera directement à la fonction intégrée (si elle existe). Sinon, il s'ouvreman
normalement:la source
À partir de n'importe quelle distribution Linux, vous devriez pouvoir l'utiliser
info bash
si vous voulez avoir des paragraphes séparés par type d'action où les informations sont identiques aux pages de manuel.la source