La commande man
ouvre un manuel Nice pour de nombreux programmes, mais comment puis-je l'utiliser plus efficacement? Par exemple, man gcc
apporte:
NAME
gcc - GNU project C and C++ compiler
SYNOPSIS
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-Wpedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] [@file] infile...
Only the most useful options are listed here; see below for the
remainder. g++ accepts mostly the same options as gcc.
....
many text
Mais que se passe-t-il si je n'ai besoin que d'une partie? Quel est le meilleur moyen de passer à la section où -Idir
est décrit, par exemple?
man
en appuyant sur / et la chaîne de rechercheman
utilise la visionneuse less
par défaut. Vous pouvez rechercher dans less
en appuyant sur / (barre oblique), puis ajoutez la chaîne de recherche, dans votre exemple -Idir
GCC(1) GNU GCC(1)
NAME
gcc - GNU project C and C++ compiler
SYNOPSIS
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-Wpedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] [@file] infile...
Only the most useful options are listed here; see below for the
remainder. g++ accepts mostly the same options as gcc.
DESCRIPTION
When you invoke GCC, it normally does preprocessing, compilation,
Assembly and linking. The "overall options" allow you to stop this
process at an intermediate stage. For example, the -c option says not
to run the linker. Then the output consists of object files output by
the assembler.
/-Idir
Appuyez sur la Enter clé, et obtenir le premier match.
Presse / (slash) et le Enter Appuyez de nouveau sur la touche, répétez cette opération jusqu'à ce que vous trouviez la section souhaitée. Vous pouvez également appuyer sur n pour le prochain match.
-Idir
Add the directory dir to the head of the list of directories to be
searched for header files. This can be used to override a system
header file, substituting your own version, since these directories
are searched before the system header file directories. However,
you should not use this option to add directories that contain
vendor-supplied system header files (use -isystem for that). If
you use more than one -I option, the directories are scanned in
left-to-right order; the standard system directories come after.
If a standard system include directory, or a directory specified
with -isystem, is also specified with -I, the -I option is ignored.
The directory is still searched but as a system directory at its
normal position in the system include chain. This is to ensure
that GCC's procedure to fix buggy system headers and the ordering
for the "include_next" directive are not inadvertently changed. If
you really need to change the search order for system directories,
use the -nostdinc and/or -isystem options.
-iplugindir=dir
Set the directory to search for plugins that are passed by
-fplugin=name instead of -fplugin=path/name.so. This option is not
meant to be used by the user, but only passed by the driver.
Manual page gcc(1) line 10179 (press h for help or q to quit)
SUMMARY OF LESS COMMANDS
Commands marked with * may be preceded by a number, N.
Notes in parentheses indicate the behavior if N is given.
A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.
h H Display this help.
q :q Q :Q ZZ Exit.
---------------------------------------------------------------------------
MOVING
e ^E j ^N CR * Forward one line (or N lines).
y ^Y k ^K ^P * Backward one line (or N lines).
f ^F ^V SPACE * Forward one window (or N lines).
b ^B ESC-v * Backward one window (or N lines).
z * Forward one window (and set window to N).
w * Backward one window (and set window to N).
ESC-SPACE * Forward one window, but don't stop at end-of-file.
d ^D * Forward one half-window (and set half-window to N).
u ^U * Backward one half-window (and set half-window to N).
ESC-) RightArrow * Left one half screen width (or N positions).
ESC-( LeftArrow * Right one half screen width (or N positions).
F Forward forever; like "tail -f".
ESC-F Like F but stop when search pattern is found.
r ^R ^L Repaint screen.
R Repaint screen, discarding buffered input.
---------------------------------------------------
Default "window" is the screen height.
Default "half-window" is half of the screen height.
---------------------------------------------------------------------------
SEARCHING
/pattern * Search forward for (N-th) matching line.
?pattern * Search backward for (N-th) matching line.
n * Repeat previous search (for N-th occurrence).
N * Repeat previous search in reverse direction.
ESC-n * Repeat previous search, spanning files.
ESC-N * Repeat previous search, reverse dir. & spanning files.
ESC-u Undo (toggle) search highlighting.
&pattern * Display only matching lines
---------------------------------------------------
A search pattern may be preceded by one or more of:
^N or ! Search for NON-matching lines.
^E or * Search multiple files (pass thru END OF FILE).
^F or @ Start search at FIRST file (for /) or last file (for ?).
^K Highlight matches, but don't move (KEEP position).
^R Don't use REGULAR EXPRESSIONS.
---------------------------------------------------------------------------
HELP -- Press RETURN for more, or q when done
Vous trouverez plus de détails sur les 'outils d'aide' en cliquant sur le lien suivant
Comment puis-je obtenir de l'aide sur les commandes de terminal?
Je ne peux pas améliorer réponse de Wildcard quand j'ai posé la même question à Unix & Linux Q & A.
Si vous voulez
grep
leman <program>
pour un motif commençant par un trait d'union, utilisez--
avant le motif que vous spécifiez. Exemple utilisantman find
:man find | grep -- -type
Si vous voulez plus d'informations, par exemple la section entière décrivant une option, vous pourriez essayer d'utiliser
sed
:$ man find | sed -n '/-mindepth/,/^$/p' -mindepth levels Do not apply any tests or actions at levels less than levels (a non-negative integer). -mindepth 1 means process all files except the command line arguments.
Cependant, cela ne fonctionnera pas pour toutes les options que vous pourriez rechercher. Par exemple:
$ man find | sed -n '/^[[:space:]]*-type/,/^$/p' -type c File is of type c:
Pas très utile. Pire encore, pour certaines options, vous pourriez être induit en erreur en pensant que vous auriez lu le texte intégral de l’option alors que vous ne l’aviez pas fait. Par exemple, la recherche
-delete
omet le très important AVERTISSEMENT contenu dans un deuxième paragraphe situé sous cet en-tête.Ma recommandation est d'utiliser un appel standard à
man
avec le jeu de variables d'environnementLESS
. Je l'utilise assez souvent dans mes réponses sur ce site.LESS='+/^[[:space:]]*-type' man find
Pour en savoir plus sur la façon dont cela fonctionne, voir:
LESS='+/^[[:space:]]*LESS ' man less LESS='+/\+cmd' man less LESS='+/\/' man less
Si vous souhaitez simplement trouver l’option rapidement et de manière interactive dans la page de manuel, apprenez à utiliser les fonctionnalités de recherche de
less
. Et aussi voir:
Je voudrais y répondre de la manière la plus simple.
Une fois que vous avez ouvert la page de manuel du package à l'aide de man <package>
, vous pouvez utiliser l'utilitaire de recherche pour trouver les détails d'une option en utilisant /<option>
, par exemple, pour vérifier les détails de l'option -r, utilisez /-r
.
Lorsque vous affichez des pages de manuel et recherchez en appuyant sur /, less
traite actuellement votre modèle de recherche comme un expression régulière . Lors de la recherche d'options de ligne de commande, je trouve très utile de leur ajouter \b
, ce qui correspond à une limite de mot . Cela saute souvent beaucoup de texte qui correspondrait, mais n’est pas ce que je cherche (ou qui, en tout cas, n’est pas ce que je veux lire en premier).
Par exemple, pour rechercher l'option -I
, vous pouvez taper:
/-I\b
/
indique à less
que vous souhaitez effectuer une recherche, comme d'autres l'ont mentionné (voir réponse de la base MIB ). Vous écririez ?
au lieu de /
si vous vouliez que votre recherche aille vers le haut dans la page de manuel plutôt que vers le bas.-I
est le texte littéral que vous recherchez.\b
correspond à la limite entre un caractère Word (A-Z
, a-z
ou _
) et un caractère autre que Word, ou entre un caractère Word et son tout début ou sa fin. du texte dans lequel il se produit.Vous devrez peut-être encore rechercher des correspondances ultérieures. Pour ce faire, appuyez sur n. Pour revenir aux matchs précédents, appuyez sur Shift+n.
Dans le cas de la recherche de -I
dans la page de manuel gcc
, par exemple, j'ai constaté que -I
avait été apparié six fois avant le match que je cherchais, où -I
l'option a été réellement documentée. En revanche, -I\b
n'a été associé qu'une seule fois avant ce match.
Si vous préférez, vous pouvez utiliser \>
au lieu de \b
. \>
ne fait que correspondre à la fin d'un mot (où un "mot" correspond à un ou plusieurs caractères Word définis ci-dessus). Si vous voulez faire correspondre le début d'un mot, vous pouvez utiliser \<
. Notez cependant que cela ne fonctionne pas d'écrire quelque chose comme \<-I
pour correspondre à l'option -I
, car \<
ne correspondrait pas aux espaces suivis de -
.