На этот вопрос уже есть ответ здесь:
В руководстве по sudo
мне нужно найти -k
, поэтому я попробовал следующее:
man sudo | grep '\-k'
Но это привело бы к наполовину написанному абзацу на выходе:
sudo -h | -K | -k | -V
Similar to the -k option, except that it removes the user's
-k, --reset-timestamp
Вместо этого я попытался распечатать все руководство и раскрасить поисковую фразу следующим образом:
man sudo | grep '\-k\|$'
Но поскольку страница руководства слишком длинная, я не могу прокрутить достаточно, чтобы добраться до начала вывода (Примечание: я не хотите изменить строки прокрутки в настройках профиля Терминала).
Поэтому мне нужно использовать команды more
или less
, чтобы иметь возможность отображать вывод по страницам, поэтому я попробовал:
man sudo | grep '\-k\|$' | less
Но, конечно, это не работает , потому что конвейер запускает вторую команду по 1-й команде.
Есть идеи, как перенаправить конвейер?
Или заставить grep
печатать весь абзац вместо одной строки? (строки основаны на размере окна Терминала)
man
по умолчанию уже использование less
как пейджер для отображения содержания страницы руководства.
Теперь less
уже имеет встроенный поиск и функцию выделения, таким образом, Вам не нужен внешний инструмент как grep
для этого.
Просто откройте страницу справочника путем выполнения man sudo
в оболочке затем введите /-k
(нажмите / и введите свой шаблон поиска). less
теперь выделится везде, где это регулярное выражение соответствия в документе и также переходит непосредственно к первому вхождению.
Можно затем перейти к следующему соответствию путем ввода n
(нажмите N), или предыдущее соответствие путем ввода N
(нажмите Shift+N).
Более общий, если Вы хотите просмотреть grep
вывод с красочным выделением в less
, необходимо использовать grep --color=always
(чтобы всегда испустить цветовые коды, не производя к терминалу, но каналу) и less -R
(для интерпретации цветных Escape вместо того, чтобы печатать управляющие символы):
man sudo | grep --color=always '\-k\|$' | less -R
Используйте grep
, -A
, -B
и -C
, чтобы поймать окружающие линии
man grep | grep '\-[ABC]' -A2
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines. Places a line containing a group separator (described under --group-separator) between contiguous groups of matches. With the -o or
--only-matching option, this has no effect and a warning is given.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines. Places a line containing a group separator (described under --group-separator) between contiguous groups of matches. With the -o or
--only-matching option, this has no effect and a warning is given.
-C NUM, -NUM, --context=NUM
Print NUM lines of output context. Places a line containing a group separator (described under --group-separator) between contiguous groups of matches. With the -o or --only-matching
option, this has no effect and a warning is given.
В вашем случае:
man sudo | grep '\-k' -A5 -B2
Это конечно, не идеально, так как вы не знаете, сколько строк нужно, но это все же может помочь вам найти то, что вам нужно.
Возможно, пейджер most
удовлетворит ваши требования. Попробуйте
export PAGER=most
man sudo
/-k