зімкніть сторінку man команди з дефісом


18

Припустимо, я хочу знати -iперемикач у grepкоманді без прокрутки. Мені потрібна специфікація саме для цієї команди або принаймні побачити екран, який показує це першим. Так як? Як можна сказати, що взагалі не просто для grep -i.


4
дізнайся пошук у Vim
arsaKasra

Відповіді:


14

Спробуйте цю просту sedкоманду,

$ man grep | sed -n '/-i, --ignore-case/,+2p'
    -i, --ignore-case
              Ignore  case  distinctions  in  both  the  PATTERN and the input
              files.  (-i is specified by POSIX.)

Пояснення:

sed -n '/-i, --ignore-case/,+2p'

        |<-Search pattern->|

Він надрукує рядок, що містить шаблон пошуку, а також 2 рядки, що знаходяться трохи нижче, до рядка пошуку.

АБО

Ви можете просто вказати лише прапори в пошуковому паттені, як нижче.

avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *i, -/,+3p'
       -i, --ignore-case
              Ignore  case  distinctions  in  both  the  PATTERN and the input
              files.  (-i is specified by POSIX.)

avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *V, -/,+3p'
       -V, --version
              Print  the version number of grep to the standard output stream.
              This version number should be included in all bug  reports  (see
              below).
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *F, -/,+3p'
       -F, --fixed-strings
              Interpret PATTERN as a  list  of  fixed  strings,  separated  by
              newlines,  any  of  which is to be matched.  (-F is specified by
              POSIX.)
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *G, -/,+3p'
       -G, --basic-regexp
              Interpret PATTERN  as  a  basic  regular  expression  (BRE,  see
              below).  This is the default.

Ви можете додати цей скрипт до свого .bashrc( $HOME/.bashrc) для швидкого доступу:

mangrep(){
    USAGE="mangrep <application> <switch>"
    if [[ "$#" -ne "2" ]]
      then
          echo "Usage: $USAGE"
      else
          man "$1" | sed -n "/ *"$2", -/,+3p"
    fi
}

23

Введіть команду нижче на терміналі:

man grep

Потім введіть символ слэш /, і напишіть пошук, як -i, за ним і далі Enter. Це позиціонує курсор під час першого появи рядка пошуку. Натискання nпереміщує курсор до наступного явища. Натискання Shift+ nпереміщує курсор до попереднього явища.


1
Він знайде всю сторінку -iна сторінці. man grepАле ОП бажає лише опису, пов’язаного з -iпрапором на сторінці людини.
Авінаш Радж

3
@AvinashRaj ні, це дозволить вам переглядати кожне виникнення -i. Саме цього хоче ОП.
тердон

9

Хоча найпростішим підходом є пошук за /пропозицією @girardengo, ви також можете використовувати grepзамість sedякого я вважаю простішим:

$ man grep | grep -A 1 '^ *-i'
   -i, --ignore-case
          Ignore  case  distinctions  in  both  the  PATTERN and the input
          files.  (-i is specified by POSIX.)

В -A Nозначає «Друк N рядків після узгодження одного. Просто трюк , щоб отримати наступні кілька рядків, схожих на Авінаша в sed підході.


3

Ви можете використовувати функцію пошуку всередині man, просто натисніть "s", введіть шукану клавішу (-i у вашому випадку) та натисніть клавішу введення.


Після цього я набираю man grep, після чого натискаю s, після чого я бачу файл журналу: після цього набираю -i та ENTER, але опису не бачу. Або є щось таке, чого я не знаю
Mohammad Reza Rezwani


2

Найбільш ефективний метод, про який я знаю, - це пошук за чоловічою сторінкою -i(начебто, на цьому веб-сайті не виходить мій код. Що я маю на увазі <space><space><space>-i). Це 3 пробіли (можливо, вам знадобиться більше / менше пробілів), а потім прапор, який ви шукаєте. На моєму досвіді це майже завжди працює, і ви можете змінити його на якийсь варіант у випадках, коли це не працює.

Це працює, тому що фактична документація на прапори, як правило, з відступом. Це дозволяє уникати інших згадок прапора в інших розділах, оскільки перед ними зазвичай лише один пробіл.


1

Через всі відповіді це може бути добре, але я думаю, що ви зосереджуєтесь лише на фрагменті документації, а не на всіх. Наприклад, щоб знайти -iкомутатор grep-документації:

info grep Invoking Command-line\ Options Matching\ Control

Я знайду всю інформацію про "grep", як "викликати" конкретні "параметри командного рядка" для "відповідності контролю". До жаль , він не йде більш глибше , ніж це, але у нього є -i, -y, --ignore-caseв Firsts 25 рядків, що - то розумне , що вам не доведеться прокручувати все свій шлях вниз.

Це рішення є більш гнучким, а також дозволяє шукати всі інформаційні сторінки:

info --apropos=--ignore-case
"(coreutils)join invocation" -- --ignore-case <1>
"(coreutils)uniq invocation" -- --ignore-case <2>
"(coreutils)sort invocation" -- --ignore-case
"(gettext)msggrep Invocation" -- --ignore-case, ‘msggrep’ option
"(grep)Matching Control" -- --ignore-case

(довелося використовувати --ignore-caseзамість того, що -iце було занадто часто, але ви можете просто обробити вихідну інформацію в будь-якому випадку)

У цьому випадку у вас є як назва інформаційної сторінки, так і точний розділ. Ах, майже забув, ви також можете просто tabпройти через більшу частину інформаційних сторінок.


1

Ви можете використовувати Perl та його "режим абзацу" для вилучення лише відповідного абзацу:

man grep | perl -00 -ne 'print if / -i/'

1

Мій улюблений підхід, щоб знайти заданий варіант на manсторінці, - це використовувати регулярний вираз \s{2,}-option. Що стосується питання, ви можете зробити, man grepа потім набрати регулярний вираз:

/\s{3,}-i

або

/ {3,}-i
 ^------------- space here

Це відповідатиме -iлише тоді, коли слідує три чи більше пробілів.


0

Оскільки lessвикористовується за замовчуванням як пейджер man, ви можете використовувати LESSзмінну середовища для передачі шаблону для пошуку, коли lessвідкриється сторінка. Це ідентично тому, як робити, наприклад, man lsшукати варіант --allабо -aвводити, /а потім вводити шаблон, наприклад, --allабо -a.

Все це можна зробити:

LESS='+/--all' man ls

Або

LESS='+/-a' man ls

Введіть те, що ви хочете шукати /.

Імовірно, це найкраще підходить для довгих варіантів (наприклад --all) порівняно з короткими (наприклад -a).


0

Якщо ви хочете , щоб 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.

Джерело

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.