Man sayfalarının bölüm başlıkları neden tamamen kullanılamıyor?


14

Bu, El Capitan'da ve standart Terminal'de (bash) bir iş arkadaşınızın High Sierra'sında test edildi.

user@hostname ~ $ man ls | grep "BU"
BUGS
user@hostname ~ $ man ls | grep "BUG"
user@hostname ~ $ 
user@hostname ~ $ man ls | grep "IEEE"
     files in order to be compatible with the IEEE Std 1003.2 (``POSIX.2'')
     The ls utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').

Açıklığa kavuşturmak için: "HATALAR" bu (ve diğer çeşitli) sayfalardaki bir bölüm başlığıdır. Bölüm başlıkları için, grepping sadece ilk 2 karakter için işe yarıyor gibi görünüyor; bu, denediğimiz birkaç farklı bölüm arasında tutarlıdır. İçeriğin geri kalanı grepiçin beklendiği gibi çalışıyor gibi görünüyor.

Ben BSD olmayan aromalı bir Linux kutusu (Amazon Linux) içine ssh'd ve aynı davranış sergiliyor gibi görünmüyor.

Burada neler oluyor?


Bu BSD adamından nefret etmemin nedeninin bir parçası. Metni biçimlendirir ve çıktısı bir boru olsa bile çağrı cihazını çalıştırır. Ve çağrı cihazım vim, bu yüzden Linus şimdiye kadar yapmamı yasakladı man foo | grep bar, yanıt vermeyen bir boru hattı alıyorum (ve belki de önyükleme yapmak için dağınık bir terminal). : / mandb man , Linux'ta genellikle gördüğünüz şey, daha mantıklı.
muru

Yanıtlar:


15

Bir man sayfasındaki ham kodları görüntülerseniz ne olduğunu görebilirsiniz. Bunu yapmanın bir yolu, man sayfasını bir dosyaya aktarmak ve içeriğini doğrudan denetlemektir:

man ls > man.ls
nano man.ls

"HATA" kelimesi aslında dosyada şöyle görünür:

B^HBU^HUG^HGS^HS

Üstbilgilerin biçimlendirme karakterleri içerdiğini göreceksiniz, bu nedenle "HATA" kelimesinin tamamı mevcut değil.


Manuel sayfanın düz metin içeriğine erişmek istiyorsanız, şu komutu kullanabilirsiniz:

man -P cat <thepage>

-POpsiyon diğer unix çağrı cihazını ayarlar ve catbir düz metin çıktısı veren biçimlendirme bilgisini göz ardı eder. Bununla birlikte, bu macOS'ta çalışmıyor gibi görünüyor, bu nedenle çıktının col -bboru hattında manuel bir adıma ihtiyacı var :

man ls | col -b | grep BUGS

2
Teşekkürler Scot! Bir dosyaya yönlendirme ve bir metin düzenleyicide açma denediğim ilk şey olmalıydı. Bu bilgileri ve unix.stackexchange.com/a/15866 (ie man ls | col -b | grep "BUGS") ' den gelen bilgileri kullanarak istediğimi elde edebildim.
Jonathan Merklin

7
Kutsal moly, cesur eski TTY ve daktilo dönemi, bir harf ve geri yazın ve mektubu tekrar yazın, mükemmel sıralanmayacaklarını ve daha fazla mürekkep bırakacaklarını bilerek. Bir olmalı bulunuyor nroffGerekirse o çevirmek için komut grep ben doğru komutunu geçirmek için nasıl birlikte bu genişletilmiş misiniz acaba - groffvia man?
bmike

@Kroltan +10 ve +10 da scot. Bu, bu kediyi derlemeyi düşünmediğimden çok daha zarif.
bmike

@Kroltan Hmmm - benim için man -P cat ls | grep BUGSaynı şekilde çalışıyor man ls | grep BUGS, ikisi de hiçbir şey döndürmüyor.
Scot

1
GNU roff kullanan manuel sistemler için, gerçekten grottyTTY-37 veya ECMA48 kontrol sekanslarını yaymasını engelleyecek seçenekler vardır.
JdeBP
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.