it-swarm-tr.com

Linux man sayfalarındaki linkleri nasıl takip edebilirim?

Bir kılavuz sayfasında belirtilen bağlantıları takip etmenin bir yolu var mı? Örneğin, ps; kırmızı ile işaretlenmiş bağlantıya nasıl erişebilirim?

Screenshot of the ps man page

101
its_me

Man sayfaları, Unix First Edition'a kadar uzanır. köprü metni icat edilmiş olsa da, henüz bebeklik döneminde idi; web yirmi yıldır ve el kitabı gerçek bir basılı kitaptı, eğer sığarsa genellikle sayfa başına bir komutla (bu yüzden onlara sayfalar deniyordu).

Manuel sayfalar için kullanılan biçim o zamandan bu yana biraz gelişti, ancak çoğu sayfa gerçekten köprü metni için tasarlanmamıştır ve varsayılan man programı bunu desteklemez (sadece düz bir metin görüntüleyicidir bazı temel biçimlendirme). Bununla birlikte, geleneksel olarak man(1) biçiminde yazılmış olan bazı köprüler, özellikle diğer sayfalara bağlantılar oluşturan yeniden sayfa oluşturma programları vardır, burada man, adam sayfasının adıdır ve 1bölüm numarasıdır :

  • tkman , köprüleri olan bir GUI kılavuz sayfası görüntüleyicisi
  • WoMan ( wiki , adam karşılaştırma , eskiden ), köprüleri destekleyen Emacs için bir man sayfa tarayıcısı
  • man2html , bir erkekten HTML'e dönüştürücü (artı sonucu okumak için bir web tarayıcısı)

Çevrimiçi olarak birkaç sitede man2html Veya benzer araçlarla HTML'ye dönüştürülen çeşitli işletim sistemlerinin manuel sayfalarına göz atabilirsiniz, örneğin:

Man sayfalarının unix'te yerleşik dokümantasyon formatı haline gelmesinden bir süre sonra ve web icat edilmeden bir süre önce, [~ # ~] gnu [~ # ~] projesi, metin terminalleri için tasarlanmış basit biçimlendirmeye bağlı kalırken, insandan daha gelişmiş bilgi dokümantasyon formatını tanıttı. Bilginin insana göre en büyük yeniliği, diğer sayfalara köprüler içeren çok sayfalı belgelere sahip olmaktı. Bilgi = GNU projeleri için hala tercih edilen belge biçimidir, ancak çoğu Bilgi sayfası bir Texinfo kaynağından (veya bazen başka biçimler de olabilir) HTML oluşturabilir.Bir program için bilgi belgeleri mevcut olduğunda, genellikle ana kılavuzdur, ancak man sayfaları yalnızca komut satırı bağımsız değişkenleri hakkında temel bilgiler içerir.

Her şeyden önce, bu bir bağlantı değil. Bu sadece bir alt çizgidir. Man sayfaları, bir terminalin işleyebileceği basit biçimlendirmeye sahip metin belgeleridir. Alt çizgi sadece bir vurgu, dahil hiçbir "bağlantı" yoktur.

Normal man komutu yalnızca bir metin biçimlendiricisidir. Aslında man komutu metni göstermiyor bile, man sadece man sayfası dosyasında saklanan bilgileri formatlıyor[1] ve biçimlendirilmiş çıktıyı, biçimlendirilmiş çıktıyı ekranda görüntüleyen başka bir programa (genellikle less) gönderir. Bu görüntü programlarının bağlantı kavramı yoktur.

Bu şekilde biçimlendirmeye bakabilecek ve böyle bir vurgulamanın yukarı çekilip bir bağlantı oluşturabilecek ilgili bir man sayfası olduğunu gösterebileceği konusunda eğitimli bir tahmin yapabilen bazı özel dokümantasyon okuyucuları vardır, ancak bilmiyorum hangileri yapar. Belki pinfo?

Web'i köprülerle biçimlendirme gibi yapmak istiyorsanız, bağlantı eklenmiş hemen hemen tüm UNIX kılavuzlarını çevrimiçi bulabilirsiniz. man [anything] google içine ve neredeyse kesinlikle ilk çift hit bir alacak.

Örneğinizde, görsel vurgulama, kendi man sayfası olan başka bir program adı olan ve kolayca çekebileceğiniz bir ipucu. Deneyin man 1 top. 1, man sayfalarının bakılacak bölümünü gösterir. Bölümlerin açıklaması için bu soruya bakın: Bir man sayfasındaki numaralar ne anlama geliyor?


[1] man sayfa dosyasını bir metin düzenleyicide açarsanız, kolay okuma için biçimlendirilmemiş ham man sayfasını görürsünüz. Ham man sayfası troff adlı bir biçimlendirme dilinde yazılmıştır. troff ve man sayfasının nasıl yazılacağı hakkında daha fazla bilgi için bakınız: https://liw.fi/manpages/ .

39
Caleb

Bu çok geç cevap ama w3mman kullanın. w3mman, w3m tarafından sistemin manuel çağrı cihazıdır.

https://linux.die.net/man/1/w3mman

W3m paketini yükleyerek deneyebilirsiniz. Bu paketin büyük Linux/UNIX dağıtımlarının ve Cygwin'in yazılım depolarında kayıtlı olduğuna inanıyorum.

13
akawaguc

Sorunuzu, iş akışınızı takip etmeye çalıştığım bir anlamda biraz daha yorumlamaya çalışayım. Muhtemelen sahip olmak istediğiniz şey, sizi doğrudan okuduğunuz altı çizili komutlara yönlendiren bir man sayfası içindeki tuş kombinasyonudur. Yani, başka bir şey yüklemeye gerek yok, başka bir konsol açmıyor ve örneğin tam sözdizimini unutuyor.

Bu en basit çözüm ünlem işaretidir (man sayfalarını görüntülemek için less kullanıyorsanız) ve altı çizili top öğesine gitmek istiyorsanız:

!man top

Veya

!man 1 top

q düğmesine birkaç kez basarak hepsini kapatmanız gerekir. Ayrıca, LESSSECURE=1, güvenli modda less çalışmasını sağlayan ve !. Size "Komut mevcut değil" gibi bir şey söyleyecektir.

11
Anne van Rossum

w3mman bağlantıları takip etmek için bir çözüm olsa da, tüm ekranı kullanmaz (en azından ubuntu 12.10'da)

Kullanmayı tercih ederim:

$ Sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'

her oturumu almak için son komutu ~/.bash_aliases veya benzeri bir başlangıç ​​komut dosyasına ekleyin.

- P w3m , hman'a ilk tarayıcının vaşak veya mantıklı tarayıcı olduğu için tercih w3m

hman , html2man üzerinde paketlenmiş bir araçtır. Bakınız b

Eğer onaylı çıkış sizin için can sıkıcıysa, bana göre this

2
albfan

Dedikleri gibi, bunun için tasarlanmamıştı.

Kullanabilirsiniz info man öğesine gidin ve öğenizdeki AYRICA GÖR bölümünün altına girdiğinizde enter tuşuna basın.

info - Bilgi belgelerini okuyun

2
binarytrails

Özellikle Ubuntu için Yelp var. Varsayılan olarak yüklenir ve varsayılan olarak manuel sayfaları görüntüleyebilir, ancak bunun için çağrı, man komutununkiyle aynı değildir; bir takma ad veya Kabuk işlevi sonraki noktanın etrafında çalışabilir (Kabuğunuza bağlıdır).

Yelp 'man:exit'

Varsayılan olarak bir bölümü bilmediğim bir şekilde ayarlayacaktır. Hatırlatma: manuel bir konunun bölüm listesini almak için whatis, whatis exit.

Yelp'in 2 gibi belirli bir bölümden manuel bir sayfa görüntülemesini istemek için şunları yapın:

Yelp 'man:exit(2)'

Sorunlar: Yelp'in hataları vardır ve komut satırından çağırırken birden fazla hata çıktısı almaya hazır olun. Ayrıca, bir takma ad veya özel Kabuk işlevi, tüm hataları /dev/null

2
Hibou57

Benim (birkaç) hack'im var.

kesmek 1

Bunu ~/.bashrc veya ~/.zshrc'nize koyun

function man(){
    for arg in "[email protected]"; do
        vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
    done
}

Ekran Görüntüsü ..

manual in vim screenshot

Asciinema ..

https://asciinema.org/a/130131

Şimdi ..

  1. örneğin, man vim yazdığınızda, bu kılavuz sayfasını vim olarak açar.

    • örneğin man man vim yazarsanız, önce man 'nin kılavuzunu açar ve vim'den çıktıktan sonra vim' nin kılavuzunu açar
  2. bastığınızda K (başkent k) alt kısımdaki başka bir sayfadayken ( AYRICA GÖR bölümü), bu kılavuza atlayacaksınız (maalesef daha az çağrı cihazı - bunun nedeni let no_man_maps = 1; çünkü bunu yapmazsanız, vim q:q olun ve kolayca makro kaydedemezsiniz ve vim başka yollarla beceriksiz davranabilir).

    • girdiğiniz bu ikinci kılavuzdan çıkmak sizi görüntülemekte olduğunuz önceki kılavuza geri götürecektir
  3. ftplugin/man.vim yüklediğiniz ve ft'nin (otomatik olarak) man olarak ayarlandığı için çok güzel bir sözdizimi vurgulaması elde edersiniz.

  4. kopyalayıp yapıştırabilir, vim içinde serbestçe gezinebilir ve hatta arabelleği ve :w ~/usefulfile değiştirebilirsiniz. Kayıt makroları, "+y İle panoya çekilmek (örneğin +clipboard Varsa) vb. Gibi normalde vim'de yapacağınız her şeyi yapabilirsiniz.

Ben daha az daha güzel buluyorum.

Bulduğum tek küçük aksaklık (çağrı cihazınız olarak daha az kullanırsanız hala var), bir vim oturumunda birden fazla kılavuzun açık olmasını istiyorsanız. Bunu yapmanın bir yolunu gerçekten göremiyorum.

Birkaç not:

  1. arabelleği kaydetmeye çalışırsanız E382: Cannot write, 'buftype' option is set

    • Yanlışlıkla kaydetmeyi önlediğinden tasarruf edememeyi seviyorum
  2. yine de :w /tmp/man.man gibi kaydedebilirsiniz

    • bir .man uzantısıyla kaydederseniz, dosyayı açmak dosya türünü man olarak ayarlar
    • bir .man uzantısıyla kaydetmezseniz, :set ft=man çalıştırarak ft'yi man olarak ayarlayabilirsiniz.
  3. man sayfalarını açarken bir şeyler yapmanız gerekirse, örneğin autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!' kullanabilirsiniz.

  4. Aşağıdakileri vimrc'ye koydum, böylece K kılavuzu açmayı denemek için düğmesine basın. G önceki kılavuza geri dönmek için:


augroup man
    autocmd!
    autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
    autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END

hack 2

bunu ~/.bashrc veya ~/.zshrc'nize koyun

function man(){
    declare -a args
    for arg in "[email protected]"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

Ekran Görüntüsü ..

multiple manuals in vim

Asciinema ..

https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv

Bu, 1 ve daha az yüz (artık bir arabellekte birden fazla kılavuzu görüntüleyebileceğiniz) sorununu çözer, ancak daha az zarif.

Notlar:

  1. [~ # ~] önemli [~ # ~] isterseniz hack2 çalışmak için :let no_man_maps = 1 içine ~/.vimrc Çünkü vim, .../vim80/man.vim Kaynağını oluşturacak ve q, zorla :q İle yeniden eşlenecek.

  2. daha fazla temizlik var (şimdi her kılavuzu /tmp/*. adam olarak saklıyorsunuz)

  3. ancak şimdi, yukarıda belirtildiği gibi bir oturumda birden çok kılavuz sayfasını görüntüleyebilirsiniz

  4. basarsan K, yine de yeni bir vim oturumu açacaksınız.

    • isterseniz, autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>" gibi bir şey yapmak için ( denenmemiş gibi bir autocmd'yi (yukarıdaki gibi bir autocmd kullanarak) bağlayabilirsiniz. -))
2
Dylan

--html argümanını $ BROWSER ortam değişkeni tarafından tanımlanan tarayıcıda açmak için man 'e çevirin, bu nedenle:

BROWSER=google-chrome man ps --help

Fedora kullanıyorum. Bunun dağıtımınız için işe yarayıp yaramadığından emin değilsiniz, lütfen yorumları test edin ve bildirin.

1
tutuDajuju