Jak zrzucić stronę podręcznika?

45

Jak mogę „cat” stronę podręcznika, tak jak „cat” plik, aby uzyskać tylko zrzut zawartości?

LanceBaynes
źródło

Odpowiedzi:

40

Po pierwsze, pliki man są zwykle tylko skompresowanymi plikami tekstowymi gdzieś w twoim systemie plików. Ponieważ twój przebieg będzie różny w ich znajdowaniu i prawdopodobnie chciałeś przetworzonej i sformatowanej wersji, którą daje ci człowiek zamiast źródła, możesz po prostu zrzucić je za pomocą mannarzędzia. Patrząc na man man, widzę, że możesz zmienić program używany do przeglądania stron podręcznika z -Pflagą w następujący sposób:

man -P cat command_name

Warto też nic, co manautomatycznie wykrywa, kiedy rura jest to wyjście zamiast oglądania go na ekranie, więc jeśli masz zamiar przetwarzać ją na coś innego można przejść bezpośrednio do tego kroku tak:

man command_name | grep search_string

lub zrzucić DO pliku:

man command_name > formatted_man_page.txt
Caleb
źródło
1
użycie -P nie powoduje, że plik wyjściowy jest czytelny. Jest napisany wszystkimi znakami ctrl-H. Kiedyś robiłem man cmd>! man.cmd i otwórz man.cmd i zrób '% s / ^ H .// g', aby usunąć irytujące znaki kontrolne reprezentujące pogrubienie i kursywę. Ale nadal ma to pewien problem, gdy są inne postacie specjalne. Wciąż szukam dobrej metody, aby uniknąć ręcznej edycji danych wyjściowych.
Chan Kim,
@ChanKim Robisz coś złego lub przeszkadza Ci niestandardowa konfiguracja, ponieważ obie metody w rzeczywistości zapewniają czysty wydruk sformatowany zwykłym tekstem bez dodatkowych znaków kontrolnych. Czy jesteś pewien, że nie masz manaliasu do czegoś lub flag wymuszonych w twojej powłoce, które oddzielają twój od normalnej funkcji man?
Caleb
1
@Caleb, potwierdzam problem OP. CentOS wersja 6.7 (wersja ostateczna), / usr / bin / man gcc> j, edytuj 'j', wszystkie ctrl-H są tam. Najlepsza odpowiedź, którą znalazłem, znajduje się na stronie commandlinefu.com/commands/view/2417/...
Charles Roth,
1
man command_name > formatted_man_page.txtspowoduje powielenie niektórych słów.
Zigii Wong,
52

Aby uzyskać plik strony podręcznika ASCII, bez irytujących znaków backspace / podkreślenia i dziwnych sekwencji pogrubienia:

man ksh | col -b > ksh.txt
Bruce Ediger
źródło
6
Zasługujesz na więcej pochwał
Labo
2
Cześć, dlaczego dane wyjściowe potoku man zawierają zduplikowane znaki? i w jaki sposób col -b usuwa to? Z góry dziękuję.
saurabheights,
2
@saurabheights - człowiek próbuje robić podkreślenia i pogrubiony tekst, a może niektóre inne rzeczy ze spacjami, duplikatami znaków, sekwencjami ucieczki itp. itp. Sztuczki, które mogą zadziałać, jeśli wydrukujesz dane wyjściowe człowieka na matrycy punktowej lub innej drukarce, lub pokażesz to jako tekst na terminalu. Nie czytałem źródła col, ale prawdopodobnie po prostu sprawdza stdin bajt po bajcie i nie przekazuje spacji itp. Do stdout. Strona man cola czyta się tak, jakby ktoś napisał ją specjalnie w celu filtrowania wyników man.
Bruce Ediger,
1
ok, to ma sens. Takie znaki (ukryte) mogą powodować zduplikowanie znaków. Dziękuję Bruce.
saurabheights,
Naprawdę zasługujesz na entuzjastów trybu. Czy „col” dla kolumny?
Algebra,
24

Strony troffpodręcznika są zwykle plikami wstępnie przetworzonymi i możesz przejść do zwykłego tekstu za pomocą,

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt

groffjest opakowaniem dla troff.

Więcej informacji tutaj .

Może być konieczne użycie gzip do rozpakowania plików stron podręcznika, a nadal będziesz mieć dużo informacji o formatowaniu w danych wyjściowych.

EightBitTony
źródło
4
+1 za rozmowę o groff / troff i formatowaniu stron
podręcznika
11

Robię to cały czas. Ten wiersz poleceń sprawia mi przyjemność:

man man | col -bx > man.txt

col -b usuwa spacje.

col -bx również zastępuje tabulatory spacjami, co jest moją silną preferencją.

Jeśli chcę, aby tekst był formatowany zgodnie z moimi preferencjami podczas czytania, zmieniam polecenie na:

MANWIDTH=10000 man man | col -bx > man.txt
sotosoc
źródło
man man | col -bx > man.txtpracował dla mnie. Dziękuję Ci.
JaredH
6

Wystarczy użyć manpolecenia - możesz potokować dane wyjściowe do innych rzeczy, tak jak w catprzypadku pliku.

TomH
źródło
1
Lubię prostotę.
Joel Sjögren
3

Jeśli chcesz tylko stronę catpodręcznika, możesz po prostu przesłać ją do cat:

man ls | cat

Jeśli chcesz zrzucić jego zawartość do pliku:

man ls > ls_manpage_dump.txt
Sheharyar
źródło