Команда man выводит хорошее руководство для многих программ, но как я могу использовать его более эффективно? Например, man gcc приносит:
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
Но что, если мне нужна только его часть? Каков наилучший способ перехода к разделу, где описано -Idir, например?
Когда вы просматриваете страницы руководства и выполняете поиск, нажимая /, less фактически обрабатывает ваш шаблон поиска как регулярное выражение. При поиске параметров командной строки мне очень полезно добавить \b к ним, что соответствует границе слова. Это часто пропускает много текста, которое в противном случае соответствовало бы, но не то, что я ищу (или, во всяком случае, не то, что я хочу прочитать вначале).
Например, для поиска -I, вы можете ввести:
/-I\b
Символ / сообщает less, который вы хотите искать, как указывали другие (см. ответ MIB). Вы должны были бы написать ? вместо /, если бы вы хотели, чтобы ваш поиск поднимался вверх по man-странице, а не вниз. -I - это буквальный текст, который вы ищете. \b соответствует границе между символом слова (A-Z, a-z или _) и символом, отличным от слова, или между символом слова и самым началом или концом текста, в котором он встречается. При поиске параметров командной строки мне очень полезно добавить \b к ним, что соответствует границе слова. Чтобы вернуться к предыдущим совпадениям, нажмите / + n.
В случае поиска -I в man-странице gcc, например, я обнаружил, что -I был сопоставлен шесть раз до матча Я искал, где опция -I была фактически задокументирована. Напротив, -I\b был сопоставлен только один раз перед этим совпадением.
Если вы предпочитаете, вы можете использовать \> вместо \b. \> соответствует только концу слова (где «слово» - это один или несколько символов слова, как определено выше). Если вы хотите совместить начало слова, вы можете использовать \<. Обратите внимание, однако, что это не работает, чтобы написать что-то вроде \<-I, чтобы соответствовать опции -I, потому что \< не будет соответствовать пробелу, а затем -.
Я не могу улучшить ответ Wildcard, когда я задал тот же вопрос в Unix & amp; Linux Q & amp; A.
Если вы хотите grep получить результаты man <program> для шаблона, начинающегося с дефиса, используйте -- до указанного вами шаблона. Пример с помощью man find:man find | grep -- -type
Если вам нужна дополнительная информация, например, весь раздел, описывающий параметр, вы можете попробовать использовать 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.
Однако это не будет работать для каждого параметра, который вы могли бы искать. Например: $ man find | sed -n '/^[[:space:]]*-type/,/^$/p'
-type c
File is of type c:
Не очень полезно. Хуже того, для некоторых вариантов вы могли бы ввести в заблуждение, думая, что вы прочитаете весь текст об этом варианте, когда вы этого не сделали. Например, поиск -delete исключает очень важное ПРЕДУПРЕЖДЕНИЕ, содержащееся в качестве второго абзаца под этим заголовком. Моя рекомендация - использовать стандартный вызов man с набором переменных среды LESS. Я использую его довольно часто в моих ответах на этом сайте. LESS='+/^[[:space:]]*-type' man find
Чтобы узнать больше о том, как это работает, см .: LESS='+/^[[:space:]]*LESS ' man less
LESS='+/\+cmd' man less
LESS='+/\/' man less
. Если вы просто хотите быстро и интерактивно найти эту опцию на странице руководства, научитесь использовать возможности поиска less. А также см .: https://unix.stackexchange.com/q/193815/135943 Я хотел бы ответить на него простейшим способом.
Как только вы откроете man-страницу для пакета с помощью man <package>, вы можете использовать утилиту поиска, чтобы узнать подробности о конкретных параметрах, используя /<option>, Например, чтобы проверить детали опции -r, используйте /-r.
man по умолчанию используется средством просмотра less. Вы можете выполнить поиск в less, нажав / (косая черта), а затем добавить строку поиска в свой пример -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
Нажмите клавишу / и получите первый матч.
Еще раз нажмите / (косая черта) и клавишу Enter, повторите, пока не найдете нужную вам секцию. Вы также можете нажать n для следующего совпадения.
-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
Вы найдете более подробную информацию о «инструментах помощи» по следующей ссылке
Как получить помощь в командах терминала?
Когда вы просматриваете страницы руководства и выполняете поиск, нажимая /, less фактически обрабатывает ваш шаблон поиска как регулярное выражение. При поиске параметров командной строки мне очень полезно добавить \b к ним, что соответствует границе слова. Это часто пропускает много текста, которое в противном случае соответствовало бы, но не то, что я ищу (или, во всяком случае, не то, что я хочу прочитать вначале).
Например, для поиска -I, вы можете ввести:
/-I\b
Символ / сообщает less, который вы хотите искать, как указывали другие (см. ответ MIB). Вы должны были бы написать ? вместо /, если бы вы хотели, чтобы ваш поиск поднимался вверх по man-странице, а не вниз. -I - это буквальный текст, который вы ищете. \b соответствует границе между символом слова (A-Z, a-z или _) и символом, отличным от слова, или между символом слова и самым началом или концом текста, в котором он встречается. При поиске параметров командной строки мне очень полезно добавить \b к ним, что соответствует границе слова. Чтобы вернуться к предыдущим совпадениям, нажмите / + n.
В случае поиска -I в man-странице gcc, например, я обнаружил, что -I был сопоставлен шесть раз до матча Я искал, где опция -I была фактически задокументирована. Напротив, -I\b был сопоставлен только один раз перед этим совпадением.
Если вы предпочитаете, вы можете использовать \> вместо \b. \> соответствует только концу слова (где «слово» - это один или несколько символов слова, как определено выше). Если вы хотите совместить начало слова, вы можете использовать \<. Обратите внимание, однако, что это не работает, чтобы написать что-то вроде \<-I, чтобы соответствовать опции -I, потому что \< не будет соответствовать пробелу, а затем -.
Я не могу улучшить ответ Wildcard, когда я задал тот же вопрос в Unix & amp; Linux Q & amp; A.
Если вы хотите grep получить результаты man <program> для шаблона, начинающегося с дефиса, используйте -- до указанного вами шаблона. Пример с помощью man find:man find | grep -- -type
Если вам нужна дополнительная информация, например, весь раздел, описывающий параметр, вы можете попробовать использовать 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.
Однако это не будет работать для каждого параметра, который вы могли бы искать. Например: $ man find | sed -n '/^[[:space:]]*-type/,/^$/p'
-type c
File is of type c:
Не очень полезно. Хуже того, для некоторых вариантов вы могли бы ввести в заблуждение, думая, что вы прочитаете весь текст об этом варианте, когда вы этого не сделали. Например, поиск -delete исключает очень важное ПРЕДУПРЕЖДЕНИЕ, содержащееся в качестве второго абзаца под этим заголовком. Моя рекомендация - использовать стандартный вызов man с набором переменных среды LESS. Я использую его довольно часто в моих ответах на этом сайте. LESS='+/^[[:space:]]*-type' man find
Чтобы узнать больше о том, как это работает, см .: LESS='+/^[[:space:]]*LESS ' man less
LESS='+/\+cmd' man less
LESS='+/\/' man less
. Если вы просто хотите быстро и интерактивно найти эту опцию на странице руководства, научитесь использовать возможности поиска less. А также см .: https://unix.stackexchange.com/q/193815/135943 Я хотел бы ответить на него простейшим способом.
Как только вы откроете man-страницу для пакета с помощью man <package>, вы можете использовать утилиту поиска, чтобы узнать подробности о конкретных параметрах, используя /<option>, Например, чтобы проверить детали опции -r, используйте /-r.
man по умолчанию используется средством просмотра less. Вы можете выполнить поиск в less, нажав / (косая черта), а затем добавить строку поиска в свой пример -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
Нажмите клавишу / и получите первый матч.
Еще раз нажмите / (косая черта) и клавишу Enter, повторите, пока не найдете нужную вам секцию. Вы также можете нажать n для следующего совпадения.
-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
Вы найдете более подробную информацию о «инструментах помощи» по следующей ссылке
Как получить помощь в командах терминала?