Adam ls> temp.txt` yaptı. Çıktı metin dosyası bozuk


27

Yürütdüğümde man ls > temp.txtçıktı metin dosyası bozuk. Bozuk derken, bazı kelimelerdeki ilk ve son harflerin aşırı tekrarlandığını kastediyorum.

Birkaç ilk satırda temp.txt:

LS(1)                     BSD General Commands Manual                    LS(1)

NNAAMMEE
     llss -- list directory contents

SSYYNNOOPPSSIISS
     llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]

DDEESSCCRRIIPPTTIIOONN

Ve bunun gibi. Yönlendirme olmadan man lstamamen normaldir. Ne oluyor?


İlginç bir şekilde, dosyayı kullanarak lessya moreda biçimlendirmeyi doğru görüntüleyerek dosyayı görüntüleyin. Eğer kullanırsanız vim, bu ham backspaces (göstereceğiz ^Hekstra harflerle).
Kelvin

2
Dosyalarınız hıçkırık çekiyor.
Cthulhu

İlginç bir şekilde, Linux bilgisayarımdaki man komutu çıkış yeniden yönlendirildiğinde böyle davranmıyor.
David Bailey

Yanıtlar:


30

Kimden man man:

Bir kılavuz sayfasının düz bir metin versiyonunu geri almak ve alt çizgi kullanmak için

    # man foo | col -b > foo.mantxt

manman sayfasının formatlanmış versiyonunu basar, alt çizgi ve çift harf ayrıştırılır.

O kadar 'ayrıştırılmış' değil, "bir terminaliniz yoksa, koyu biçim tekrarlanan bir karakter olarak görüntülenecektir". Bir terminale bağladığınızda (vt100, xterm, Terminal vb.), Adam terminali tanır ve renkli, kalın, altı çizili ve benzerlerini yapmak için uygun kontrol kodlarını gönderir. Doğru bir şekilde ayrıştırılıyor - sadece boş bir terminal tipi için.

MichaelT tarafından yorum


21

Bir zamanlar, bilgisayarlar düzenli olarak tüm metinleri alındıklarında kağıda basacak olan teletiplere (teleprinters) bağlandı. Her ne kadar telektelerde altı çizili veya koyu renkli metin için herhangi bir olanak bulunmasa da, alt çizgi çıktısı almak, geriye gitmek ve başka bir şey yazdırmak başka bir şeyin altı çizili görünmesine neden olacaktır. Aynı şekilde bir karakter çıktısı alma, aynı karakteri geri çıkarma ve çıktısı, karakterin daha koyu görünmesine neden olacaktır, bunun etkililiği, kurulu şeridin kalitesine bağlı olarak değişecektir (şerit eskiyse ve zayıfsa, aynı karakteri iki kez yazarak Bunu daha da karanlık hale getirecekti; yeni bir kurdeleyle karakteri bir kez bile maksimum siyahlığa yakınlaştıracaktı. Ayrıca, bir kullanıcı yazıcıya takılı olmasa bile,manBir yazdırma biriktiricisi için oldukça yaygın olurdu, bu muhtemelen mançıkış yönlendirilirken bile neden bu şekilde davranacağını açıklardı.

BTW, bazı yazıcılarda (ve hatta teleprinterlerde) performansı , yazıcı kafasının sürekli olarak yönünü tersine çevirmesini gerektirdiğinden (ve tipik olarak her iki ucunda hedefini aştığından) _←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←Gdaha belirgin olacaktır ___________←←←←←←←←←←←UNDERLINING. Aynı zamanda çok vuruşlu kalın karakter kullanıldığında da geçerli olacaktı, ancak buradaki davranış aslında avantajlı olabilirdi, çünkü her karakter ilk basıldığında derhal bir geri çekilme karakterini takip eder ve ikincisi olmazdı. İlk karakter yazdırılırken yazdırma kafası hızlanıyorsa, bu, kalın yüz efektini daha etkili hale getirecek şekilde ikinciye göre biraz yanlış hizalanmasına neden olur.


Unix hakkında ne kadar çok şey öğrenirsem, tıpkı Windows gibi, geriye dönük uyumluluk ile nasıl örtüştüğünü buldum.
Siyuan Ren,

Düzgün tarih dersi! Bazı yöntemlerin neden diğerlerine göre tercih edilebileceğini görmek harika.
Dustin Wheeler,

15

Mateusz'un cevabı doğrudur, ancak bir tty için tasarlanan biçimlendirmeyi çıkarmak yerine, erkeğin biçimini farklı bir biçimde alabileceğinizi belirtmekte fayda vardır.

Örneğin, bunun yerine güzel biçimlendirilmiş bir pdf alabilirsiniz:

man -t ls | pstopdf -i -o ~/ls.pdf

OnyX'i yıllardır çoğunlukla sayfalarımın yazdırıldığı gibi yazdırılması için kullanıyorum . Daha fazla yok! Bunu sistemimdeki tüm man sayfalarını yapacak bir senaryoya yazacağım. Uzun zaman önce aradığımdan beri OnyX'i kullandığımdan dolayı çok teşekkür ederim. Terminalden böyle şeyler yapmayı tercih ederim ve şimdi yapabilirim.
user3439894

Güzel özellik. Bunun dışında html çıktısının basit bir yolu var mı? gzip -dc $(man -w ls) | groff -Thtml -mandoc -c > /tmp/man-ls.html
Kelvin

Man için manpage , / usr / bin / man üzerinde dizeleri çalıştırıp -tbiçimlendirmenin groff -Tps ...kodlanmış gibi göründüğünü söylüyor. Ve bu yana -Tpsgeçersiz kılar GROFF_TYPESETTER, çözüm en uygun olabilir. Boru hattında bir adım eksik olsa da. Tbl'yi istiyorsan sonra groff. Kullandığı man -d lsboru hattını görmeye çalışın .
Tim B,

6

Alternatif olarak, aşağıdaki kabuk işlevini tanımladım ( Oh-my-ZSH’nin OS X eklentisinden denir ):

man-preview () {
    man -t "$@" | open -f -a /Applications/Preview.app
}

Bu, istenen man sayfasının Önizleme'de açılabilecek tüm hoş biçimlendirme ile açılmasını sağlar. O bu tek bir takma eklemek çok kolay yeter senin ~/.profile(Sanırım pmandaha kolay man-previewben kurdum, böylece alias pman='man-previewbenim, ~/.zshrc).

PS pmanİnternetteki çeşitli nokta dosyalarında tanımlanan işlevi gördüm , Oh-my-ZSH sadece benim tanımlandığım yerde oluyor.


2

Veya herhangi bir man sayfasını aramak ve yazdırmak için ManOpen by Carl Lindberg kullanabilirsiniz. ManOpen ilk NeXtStep için geliştirildi ve Carl sayesinde hala çalışıyor.

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.