tireli seçenekler için komutun man sayfasını grep


18

Ben kullanımını bilmek istediğinizi varsayalım -iŞalter grepkaydırmadan komuta. Sadece bu komut için spesifikasyona ihtiyacım var ya da en azından önce ekranı göster. Nasıl? Söyleyebileceğiniz gibi genel olarak sadece için değil grep -i.


4
Vim'de

Yanıtlar:


14

Bu basit sedkomutu deneyin ,

$ 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.)

Açıklama:

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

        |<-Search pattern->|

Arama paternini içeren satırı, arama kalıbı hattının hemen altında bulunan 2 satırla birlikte yazdırır.

VEYA

Sadece arama pattenindeki bayrakları aşağıdaki gibi verebilirsiniz.

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.

Hızlı erişim için bu komut dosyasını .bashrc( $HOME/.bashrc) öğenize ekleyebilirsiniz :

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

23

Terminalde aşağıdaki komutu yazın:

man grep

Sonra eğik çizgi karakteri /yazın ve aramanızı beğen -i, ardından yazın Enter. Bu, imleci arama dizesinin ilk tekrarında konumlandırır. Tuşuna basmak nimleci bir sonraki tekrarlamaya taşır. Shift+ nTuşuna basmak imleci bir önceki tekrarlamaya taşır.


1
Her şey bulacaktır -i's man greppage.But OP ile ilgili sadece açıklama istediği -ikılavuz sayfasında bayrak.
Avinash Raj

3
@AvinashRaj hayır, her oluşumu arasında geçiş yapmanıza izin verecektir -i. OP tam olarak bunu istiyor.
terdon

9

En basit yaklaşım /@girardengo tarafından önerildiği gibi arama yapmak olsa da, daha basit bulduğum grepyerine kullanabilirsiniz 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 NVasıta "eşleştirme birinden sonra N satırları yazdırma. Sadece bir hile benzer önümüzdeki birkaç satır, almak için Avinash en sed yaklaşımı.


3

İçindeki arama işlevini kullanabilirsiniz man, sadece basın "s", aradığınız anahtarı yazın, (-i sizin durumunuzda) ve intro tuşuna basın.


Bundan sonra man dosyasını grep yazıyorum, bundan sonra günlük dosyasını görüyorum: bundan sonra -i ve ENTER yazıyorum ama açıklamayı görmüyorum Yoksa bilmediğim bir şey var
Mohammad Reza Rezwani


2

Farkında olduğum en etkili yöntem man sayfasını aramaktır -i(Bu site kodumu oluşturmakta başarısız gibi görünüyor. Demek istediğim <space><space><space>-i). Bu 3 boşluk (daha fazla / daha az alana ihtiyacınız olabilir) ve ardından aradığınız bayrak. Neredeyse her zaman tecrübelerimde çalışıyor ve işe yaramadığı durumlarda bazı değişkenlerine geçebilirsiniz.

Bayrakların asıl dokümantasyonu genellikle girintili olduğu için çalışır. Diğer bölümlerde bayrağın diğer sözlerini bulmaktan kaçınır, çünkü genellikle onlardan önce sadece bir boşluk vardır.


1

Tüm cevaplar iyi olabilir, ancak bence sadece bir parça belgeye odaklanıyorsunuz, hepsi değil. Örneğin -i, grep belgelerinin anahtarını bulmak için :

info grep Invoking Command-line\ Options Matching\ Control

Ben "grep" hakkında tüm bilgileri, "eşleşen kontrol" için belirli "komut satırı seçenekleri" nasıl "çağırmak" bulacaksınız. Ne yazık bundan daha derine gitmez, ama vardır -i, -y, --ignore-caseilkler 25 hatlarında, sen yok dair makul bir şey tüm yolu aşağı kaydırmak için.

Bu çözüm daha esnektir ve ayrıca tüm bilgileri aramanıza izin verir:

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

(kullanmak zorunda --ignore-caseyerine -içok yaygın olduğu için, ama sadece her durumda bilgi çıktı işleyebilir)

Bu durumda, hem bilgi sayfasının adına hem de tam bölüme sahip olursunuz. Ah, neredeyse unutuyordum, tabbilgi sayfalarının birçoğunu da kullanabilirsiniz .


1

Yalnızca ilgili paragrafı çıkarmak için Perl ve "paragraf modu" nu kullanabilirsiniz:

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

1

Bir mansayfada belirli bir seçeneği bulmak için benim en sevdiğim yaklaşım, normal ifade gibi kullanmaktır \s{2,}-option. Eldeki soru için man grep, regex yazabilir ve yazabilirsiniz:

/\s{3,}-i

veya

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

Bu -iyalnızca üç veya daha fazla boşluk izlediğinde eşleşir .


0

As lessiçin çağrı cihazı olarak varsayılan olarak kullanılır man, kullanabileceğiniz LESSzaman aramak için bir model geçmek ortam değişkeni lesssayfasını açar. Bu, örn . Yapmak ve sonra man lsseçeneği aramakla --allveya örneğin örneğin veya -ayazarak /ve girerek aynıdır .--all-a

Tüm bunlar şu şekilde yapılabilir:

LESS='+/--all' man ls

Veya

LESS='+/-a' man ls

Aramak istediğiniz şeyi girin /.

Muhtemelen bu, kısa seçeneklere (örn. --all) Kıyasla uzun seçenekler (örneğin ) için en iyi sonucu verir -a.


0

Eğer isterseniz tire ile başlayan bir desen için sonuçların, kullanım deseni önce belirtin. Kullanarak örnek :grepman <program>--man find

man find | grep -- -type

Daha fazla bilgi istiyorsanız, örneğin bir seçeneği açıklayan bölümün tamamı için şunu kullanmayı deneyin 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.

Kaynak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.