Man sayfalarının içinde tire içeren bir desen nasıl aranır?


11

Ben tüm adam sayfalarında tire içeren bir desen aramak için bir komut bulmaya çalışıyorum.

Baktım man manve şu 3 seçeneği buldum:

-K, --global-apropos

Tüm manuel sayfalarda metin arayın. Bu kaba-kuvvetli bir araştırmadır ve muhtemelen biraz zaman alacaktır; yapabiliyorsanız, aranması gereken sayfa sayısını azaltmak için bir bölüm belirtmelisiniz. Arama terimleri basit dizeler (varsayılan) veya --regexseçenek kullanılıyorsa normal ifadeler olabilir .

-w, --where, --path,--location

Gerçekte manuel sayfaları görüntülemeyin, ancak biçimlendirilecek kaynak nroff dosyalarının konumlarını yazdırın.

-S list, -s list,t--sections=list

Liste, aranacak sıraya özel manuel bölümlerin iki nokta üst üste veya virgülle ayrılmış listesidir. Bu seçenek $MANSECTortam değişkenini geçersiz kılar . ( -sYazım, Sistem V ile uyumluluk içindir.)

Onları mark-modified-linesaçıklanan bir readline seçeneği olan desen aramak için birleştirmeye çalıştım man bash:

$ man -s1 -Kw mark-modified-lines

Ancak herhangi bir sayfa bulamıyor:

No manual entry for mark-modified-lines

Ve komut kodla birlikte çıkar 16.
Komutun sözdiziminin yanlış olduğunu düşündüm, ancak öyle görünmüyor, çünkü bu komut sistemimde kelimeyi içeren 5 adam sayfasını doğru bir şekilde buluyor guitar:

$ man -s1 -Kw guitar

  /usr/share/man/man1/ffmpeg-all.1.gz
  /usr/share/man/man1/ffserver-all.1.gz
  /usr/share/man/man1/ffplay-all.1.gz
  /usr/share/man/man1/ffmpeg-filters.1.gz
  /usr/share/man/man1/ffprobe-all.1.gz

Belki de kelimedeki tirelerin bir soruna neden olduğunu düşündüm. İçinde man bash, --regexaşağıdaki gibi açıklanan seçeneği buldum :

--regex

Her sayfa bağımsız değişkeniyle adlarının herhangi bir bölümü veya açıklamalarıyla eşleşen tüm sayfaları olduğu gibi normal bir ifade olarak gösterin apropos(1). Normal bir ifade ararken genellikle "en iyi" sayfa seçmenin makul bir yolu olmadığından, bu seçenek ima eder -a.

Bu seçeneği kullanmaya ve kelimeyi , tirelerin kendilerinin herhangi bir karakterle eşleşmesi gereken metakarakter ile değiştirildiği mark-modified-linesnormal ifade ile değiştirmeye çalıştım :mark.modified.lines.

$ man -s1 -Kw --regex 'mark.modified.lines'

Metnin bashkılavuz sayfasına yazıldığını biliyorum, yine de herhangi bir sayfa yazdırmıyor .

Normal .ifadedeki metakarakter , beklendiği gibi ayrıştırılmış gibi görünüyor, çünkü bu komut:

$ man -s1 -Kw --regex 'mark.mo'

Baskılar:

  /usr/share/man/man1/x11perfcomp.1.gz
  /usr/share/man/man1/xditview.1.gz

Ve bu 2 manajın ( x11perfcomp, xditview) her ikisi de normal ifade ile eşleştirilir mark.mo. Daha spesifik olarak, man x11perfcompbu satırı içerir:

Mark Moraes wrote the original scripts to compare servers.
^^^^^^^

Ve man xditviewbu satırı içerir:

    Mark Moraes (University of Toronto)
    ^^^^^^^

Ancak man -s1 -Kw --regex 'mark.mo'bash man sayfasını yazdırmaz:

/usr/share/man/man1/bash.1.gz

Beklediğim gibi, bu satırı içerdiğinden beri:

mark-modified-lines (Off)
^^^^^^^

Man sayfalarında tire içeren bir desen aramak mümkün müdür?

Yanıtlar:


15

man -K(sayfa tarafından gösterildiği gibi man) oluşturulan formlarını değil, manuel sayfaların kaynak kodunu arar . Kısa çizgiler kodlanmıştır \-, bu nedenle bunu aramanız gerekir:

man -s1 -Kw 'mark\-mo'

Evet, bu oldukça belirsiz. Adam sayfa açıklamasında, söz olduğunu, opsiyonman-K

Bunun , işlenen metin yerine manuel sayfaların kaynaklarını aradığını ve bu nedenle kaynak dosyalardaki yorumlar gibi şeyler nedeniyle yanlış pozitifler içerebileceğini unutmayın. Oluşturulan metni aramak çok daha yavaş olur.

ancak bunu doğru kullanmak, aradığınız metnin kaynak temsilini bilmeyi içerir.


1
Gizleyebilir? Evet. Ayrıca, bu bir hata.
kubanczyk

@kubanczyk iyi, spec ile eşleşir, ancak evet, spec buggy ;-) olduğunu kabul ediyorum.
Stephen Kitt
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.