Belirli bir bölümdeki tüm man sayfalarının bir listesini nasıl gösterirsiniz?


Yanıtlar:


4

Bu komut verilen bölümdeki tüm girişlerin sıralanmış isimlerini listeler:

man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u

Yol adlarını görmek istiyorsanız, şunu kullanın:

man -aWS 1 \* | sed 's/\.[^.]*$//' | sort

Bu man, joker desenini kullanarak tüm komutlar için bir bölüm arama yapmasını söyler *(ters eğik çizgi, böylece kabuk yorumlamaz). -atüm eşleşmeleri bulur -W, sayfaları görüntülemek yerine yol adlarını yazdırır ve birinci -S 1bölümü belirler. Değişim 1aramak istediğiniz için ne olursa olsun bölümü.

sedKomut uzantılarına şeritler; tam dosya adlarını görmek istiyorsanız onu kaldırın. sortsonuçları sıralar ( -ukopyaları siler).

Yeniden kullanım için, bu bir Bash kabuk işlevini tanımlar:

function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }

Örneğin, mansect 3bölüm 3'teki girişleri görmek için onu çağırabilirsiniz .

[MacOS'ta test edildi.]


Güzel, teşekkürler. Bazı kopyaları alıyorum (örneğin /Applications/Xcode.app içindeki yollar ve 7. bölümde "Accelerate"), ancak uniqboru hattına bir şey koyarak hiçbiri düzeltmiyor .
xyz

@xyz: sort -uÇoğaltmaları kaldırmak için sort komutunu güncelledim .
Chris Sayfa

24

Yüklenen tüm man sayfalarını belirli bir bölümden listelemek için apropos kullanabilirsiniz :

apropos -s 2 .  # use an regex for apropos . means anything
apropos -s 2 -w '*'  # use unix globbing for apropos

"apropos: -s: bilinmeyen seçenek"
Michael Mrozek

@MichaelMrozek hangi sistemi kullanıyorsunuz? Benim için çalışıyor, örneğin: apropos -s 2 -w '*'
nin çıktısı

Teşekkürler. -S seçeneği, muhtemelen BSD'den olan Mac OS X aproposunda mevcut değil.
xyz,

@ f100 Tamam, belki deneyinman -a -s 2 '*'
Ulrich Dangel

Bu daha çok gibi görünüyor, ama onları listelemek yerine, sırayla her biri için izleyiciyi çağırıyor. Başka bir yorumda yayınladığım girişleri yapmak için bir işlevi hackledim. Muhtemelen sorunları var ama benim için yeterli :)
xyz

20

Manpages genellikle yerleştirilir /usr/share/manancak kontrol edilir $MANPATHve şöyle bölümlere ayrılır:

 Section 1:
 /usr/share/man/man1/

 Section 2:
 /usr/share/man/man2/

 ...

Böylece, tüm yüklü bölüm 2 man sayfalarını listelemek için şunları yapın:

ls /usr/share/man/man2/

Veya daha eksiksiz olanı:

find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'

İkincisi $MANPATH, adlarında boşluk olan dizinler varsa sorun yaşar.

Çoğu dağıtımda, mevcut kılavuz sayfalarını bir paket aracıyla da kontrol edebilirsiniz, örneğin, aşağıdaki apt-filegibi kullanabileceğiniz Debian türetilmiş dağıtımlarında :

apt-file search /man2/

1
Teşekkürler - Bu ihtiyacım olan başlangıçtı. Örneğin çalıştırılan lman 2ve her sayfa için süslenmemiş adı yeni bir satırda listeleyen ve onları sayfalayan bir kabuk işlevi yaptım . Fonksiyonun vücudu şudur:find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
xyz

1

Mac OS X'te, çalışabileceğim tek şey man -k . | grep -F '(3)', bölüm 3'teki her şeyi listeleyen şeydir.


0

Bunun çok eski bir soru olduğunu biliyorum, ancak burada verilen cevapların hepsi benim için işe yaramadı. Bu nedenle Ubuntu 18.04 ve macOS Mojave, 10.14.6'da çalışan aşağıdaki bir liner ile geldim:

find $(man --path | tr ':' ' ') -type f -path '*man2*' \
  -exec basename {} \; | sed 's/\..*//' | sort

Hızlı koşmak:

  • Thors cevap: $(man --path | tr ':' ' ')man sayfalarının güncel yollarını bulmak için
  • find <man paths> -type f -path '*man2*' -exec basename {} \; İnsan yollarındaki tüm normal dosyaların isimlerini alır
  • sed dosya uzantısından kurtulur
  • sort alfabetik.
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.