Po uruchomieniu man ls > temp.txt
wyjściowy plik tekstowy jest uszkodzony. Przez zepsuty rozumiem, że pierwsze i ostatnie litery w niektórych słowach są nadmiernie powtarzane.
Kilka pierwszych wierszy w temp.txt
:
LS(1) BSD General Commands Manual LS(1)
NNAAMMEE
llss -- list directory contents
SSYYNNOOPPSSIISS
llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]
DDEESSCCRRIIPPTTIIOONN
I tak dalej. Bez przekierowania man ls
jest to całkowicie normalne. Co się dzieje?
terminal
command-line
bash
seeker_of_bacon
źródło
źródło
less
lubmore
prawidłowe formatowanie. Jeśli użyjeszvim
, wyświetli nieprzetworzone spacje (^H
) z dodatkowymi literami.Odpowiedzi:
Od
man man
:man
wypisuje sformatowaną wersję strony man, podkreślenia i podwójne litery sąparsowanekomentarz Michaela T.
źródło
Dawno, dawno temu komputery były rutynowo łączone z teletypami (teleprinters), które drukowały cały tekst na papierze w czasie rzeczywistym po jego otrzymaniu. Chociaż teleprinterzy nie mieli żadnych ułatwień dla tekstu podkreślonego lub pogrubionego, wydrukowanie podkreślenia, odstępów i wydrukowanie czegoś innego spowodowałoby, że coś innego wyglądałoby na podkreślone. Podobnie generowanie znaku, cofanie i wyświetlanie tego samego znaku powodowałyby, że postać wydawałaby się ciemniejsza, chociaż jej skuteczność byłaby różna w zależności od jakości zainstalowanej wstążki (jeśli wstążka była stara i słaba, dwukrotnie wpisz ten sam znak sprawiłoby, że byłby znacznie ciemniejszy; dzięki nowej wstążce, która napisałaby postać, nawet jeden raz osiągnąłby prawie maksymalną czerń). Co więcej, nawet jeśli użytkownik nie był podłączony do drukarki,
man
do bufora wydruku byłby dość powszechny, co prawdopodobnie wyjaśnia, dlaczegoman
zachowuje się w ten sposób, nawet gdy wyjście zostanie przekierowane.BTW, na niektórych drukarkach (a nawet teleprinterach), wydajność
_←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G
byłaby zauważalnie gorsza niż___________←←←←←←←←←←←UNDERLINING
, ponieważ ta pierwsza wymaga, aby głowica drukująca wielokrotnie odwracała kierunek (i zwykle przekraczała swój cel na obu końcach). To samo byłoby prawdą również w przypadku korzystania z pogrubionej wielowarstwowej pogrubienia, ale w tym przypadku zachowanie może być korzystne, ponieważ przy pierwszym drukowaniu każdego znaku następuje natychmiast po znaku cofania, a drugi nie. Gdyby głowica drukująca przyspieszyła podczas drukowania pierwszego znaku, spowodowałoby to nieznaczne przesunięcie względem drugiego znaku, dzięki czemu efekt pogrubionej twarzy byłby bardziej skuteczny.źródło
Odpowiedź Mateusza jest poprawna, ale warto zaznaczyć, że zamiast usuwania formatowania przeznaczonego dla tty, możesz mieć inny format man.
Na przykład możesz uzyskać ładnie sformatowany plik pdf za pomocą:
źródło
gzip -dc $(man -w ls) | groff -Thtml -mandoc -c > /tmp/man-ls.html
-t
formatygroff -Tps ...
zi do ciągów znaków na / usr / bin / man, które wydają się być zakodowane na stałe. A ponieważ-Tps
zastępuje GROFF_TYPESETTER, Twoje rozwiązanie może być najbardziej opłacalne. Chociaż brakuje ci kroku w rurociągu. Chcesz tbl, a następnie groff. Spróbujman -d ls
zobaczyć potok, którego używa.Alternatywnie mam zdefiniowaną następującą funkcję powłoki (wywoływaną z wtyczki OS X Oh-my-ZSH ):
Powoduje to, że pożądana strona podręcznika jest otwierana w podglądzie z całym ładnym formatowaniem, jakiego można sobie życzyć. Łatwo jest dodać ten pojedynczy alias do twojego
~/.profile
(myślę, żepman
jest łatwiej niżman-preview
, więc ustawiłemalias pman='man-preview
mój~/.zshrc
).PS Widziałem
pman
funkcję zdefiniowaną w różnych plikach kropek w Internecie, Oh-my-ZSH akurat tam, gdzie jest moja.źródło
Możesz też użyć ManOpen by Carl Lindberg, aby wyszukać i wydrukować dowolną stronę podręcznika. ManOpen został opracowany dla NeXtStep i nadal działa dzięki Carlowi.
źródło