Comment accéder à un titre spécifique dans une page de manuel?


9

Exemple: ssh_config

J'ai défini un type de fichier dans vim pour cela. Je veux que le programme d'aide soit

man

Bien sûr, cela ne fonctionne pas, si je suis sur un mot, dites

ServerAliveCountMax

Je reçois une erreur, car il n'y a pas de pager man pour ServerAliveCountMax, il se trouve dans la page de manuel de ssh_config.

Existe-t-il un moyen, à partir de la ligne de commande, de passer à une chaîne ou d'exécuter un type de commande à l'intérieur de man? Tout comme les informations en fait:

info screen Miscellaneous

m'amènera à la section Divers de la page d'informations sur les écrans.

Est-ce possible avec l'homme? Même l'exécution d'une recherche servirait ...

EDIT: J'utilise OSX 10.6.5. avec l'homme par défaut (/ usr / bin / man)

EDIT: Je parle un peu de dialecte;), donc j'ai été conduit à la bonne réponse:

man -P 'less -p PATTERN' ssh_config  

L'invocation est-elle sur OSX / * BSD?

Réponses:


11

Depuis la ligne de commande pour GNU man:

man --pager='less -p ^ENVIRONMENT' man

ou pour BSD man:

man -P 'less -p ^ENVIRONMENT' man

passera à l'en-tête "ENVIRONNEMENT" de la page de manuel de man.

Voici une fonction pratique:

mans () {    # Bash
    local pages string
    if [[ -n $2 ]]
    then
        pages=(${@:2})
        string="$1"
    else
        pages=$1
    fi
    # GNU man
    man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
    # BSD man
    # man ${2:+-P "less -p \"$string\" -G"} ${pages[@]}
}

Exemples:

Utilisez normalement:

mans bash

Accédez à la rubrique "DESCRIPTION":

mans ^DESCRIPTION bash

Accédez successivement à la rubrique "DESCRIPTION" de chaque page de manuel (appuyez sur qet Enterpour passer à la suivante):

mans ^DESCRIPTION bash ksh zsh

Accédez au sous-titre "Expansion des paramètres" (vous pouvez rechercher n'importe quelle chaîne à l'aide d'expressions régulières):

mans '^ *Parameter Expansion' bash

Recherchez l'expression la plus récente que vous avez utilisée dans Less:

mans '' bash

La correspondance que vous avez recherchée ne sera pas mise en surbrillance. Si vous préférez que ce soit le cas, supprimez simplement -Gles options less.

Cette fonction ne tente pas de gérer les autres arguments et options pris en mancharge.


prometteur, j'ai édité ma question, je vois que vous avez exécuté cela en utilisant macports ou linux, j'ai une option -P dans la liste d'options de style BSD merdique ... en train d'essayer.
chiggsy

Merci, je l'ai, mais merci encore! BAH, je ne peux pas voter à nouveau votre nouvelle réponse :(
chiggsy

@Chiggsy: Je suppose que ça marche -P. Si oui, je vais l'ajouter à ma réponse.
pause jusqu'à nouvel ordre.

Pour mémoire, j'ai voté pour votre réponse originale. C'était tout à fait correct. Votre modification, je n'ai pas pu voter. Je voulais quand même ...
chiggsy

@Chiggsy: Dois-je ajouter le -Pstyle BSD à ma réponse pour référence future?
pause jusqu'à nouvel ordre.

2

Vous pouvez utiliser une PAGERvariable pour cette exécution pour éviter un problème de compatibilité BSD / GNU.

Utilisez des "guillemets si le titre de la section contient des espaces:

PAGER='less -p ^"ENVIRONMENT"' man man


1

/en moins fera une recherche avant, et ?fera une recherche inverse. Appuyez hpour voir une liste complète.


Voir mon commentaire ci-dessus, et en fait, ma question.
chiggsy

1

Dans man, vous pouvez taper /suivi d'un motif pour correspondre, par exemple pour trouver la section DEFAULT KEY BINDINGS de la page de manuel de l'écran que vous taperiez

/^DEFAULT KEY BINDINGS

Oui. C'est vrai, mais il faut être en homme pour le faire. Je veux passer du shell à cela en une seule étape.
chiggsy

1

J'utilise une astuce simple pour sauter relativement rapidement entre les sections des pages de manuel: je tape /^[A-Z]puis je peux appuyer sur net Npour avancer et reculer.

Le regex de recherche utilise la structure de base des pages de manuel typiques - Les sections principales sont écrites en majuscules et commencent une ligne sans indentation, elles doivent donc apparaître au début des lignes.


1

Je n'aime pas la solution --pager/ -P, car elle manpourrait être utilisée mais ne pas être appelée directement (par exemple lorsque vous l'utilisez git help ...). L'utilisation d'un envvar est donc plus flexible. Mais je trouve l'utilisation d'une PAGER='less ...sorte de redondance, car lessc'est généralement le pager par défaut de toute façon. Vous pouvez utiliser l' LESSenvvar pour transmettre directement des paramètres à less. Cela a également moins de problèmes de citation. Par exemple, cela passera correctement à la bonne section, même si elle contient un espace:

LESS="-p file system" git help glossary

1
Jusqu'au sommet avec cette réponse! Merci :)
Patryk Obara
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.