Jak mogę używać człowieka bez mniej?


21

Domyślnie mansłuży lessdo wyświetlania tekstu. Jak mogę to powiedzieć, aby wyświetlało wyjście na standardowe wyjście? Mój emulator terminala ma pasek przewijania i funkcję wyszukiwania i chcę ich używać zamiast klawiszy strzałek.

Odpowiedzi:


31

Właściwie wykorzystuje to, co jest określone w zmiennej środowiskowej MANPAGERlub PAGER.

W zależności od manimplementacji i wersji może również istnieć przełącznik wiersza polecenia, aby określić pager.

W implementacji man-db wykorzystuję wszystkie poniższe sposoby działania:

MANPAGER=cat man man

PAGER=cat man man

MANOPT='-P cat' man man

man -P cat man

Aby ustawić go na stałe, po prostu dodaj go do ~/.bashrc(lub innego pliku inicjalizacji używanego przez twoją powłokę):

export MANPAGER=cat

Działa to również z niektórymi starszymi manimplementacjami, podczas gdy MANOPTjest specyficzne dla man-db:

export MANOPT='-P cat'

(Lepiej nie ustawiać w PAGERten sposób. Z tego korzysta także wiele innych aplikacji).

Może również istnieć globalny plik konfiguracyjny. man-db ma /etc/man_db.conflub /etc/manpath.config. Tam możesz ustawić:

DEFINE    pager    cat

Ale niestety jest to brane pod uwagę tylko wtedy, gdy ani MANPAGERani nie PAGERjest ustawione.


2
Dobra odpowiedź. Re: ~/.bashrcmoże też owinąć eksportu w ramach warunkowego więc tylko ustawia pager czy to odpowiedni zacisk / emulator: if [ "x$TERM" = "xxterm" ]; then export MANPAGER=cat; fi; oczywiście zastąp xtermgo odpowiednim emulatorem.
Kevin

1
Właściwie to jest dobre i z założenia ten plik manpath.config jest brany pod uwagę później. Zarówno PAGER, jak i MANPAGER są na poziomie użytkownika, gdzie plik konfiguracyjny jest na poziomie systemu. Jeśli poziom systemu miałby pierwszeństwo, użytkownicy nie mogliby w ogóle nadpisać.
Paul de Vrieze

@PauldeVrieze, masz rację MANPAGER. Użyłem słowa „niestety”, ponieważ dotyczy to również zachowania PAGER, które jest ustawieniem ogólnym (używanym przez wiele narzędzi) i wolałbym, aby nie zastępowało określonego ustawienia (używanego tylko przez jedno narzędzie), nawet jeśli to jeden to poziom systemu.
manatwork

Jeśli chcesz zastąpić określone ustawienie dla jednego narzędzia, zawsze możesz to zrobić, tworząc alias, funkcję powłoki lub skrypt opakowujący. Każdy z nich stanowiłby PAGER=cat manalias man='PAGER=cat MANPAGER=cat man'
:,

6

Po prostu potokuj wyjście mando cat?

man ls | cat   # useful use of cat

6
Zauważ, że w zależności od manimplementacji, że 1) podnosi błąd, 2) wyświetla kody formatu troff w terminalu, 3) usuwa całe formatowanie, 4) działa zgodnie z oczekiwaniami.
manatwork

2
Nigdy nie widziałem, żeby robiło to inaczej niż 4.
Keith Thompson

@KeithThompson macOS manwydaje się używać zestawu stronicowania MANPAGERnawet wtedy, gdy wyjściem jest plik lub potok. A jeśli pager jest less, to wszystko jest dobrze, ponieważ lesszachowuje się tak, jak catgdy wyjście jest potokiem ... Ale jeśli użyjesz czegoś innego (takiego jak Vim, którego używam), to nie jest tak dobrze.
muru

1

Wypróbuj te polecenia, aby wygenerować dane wyjściowe man bez pagera.

  • man ls | cat (wygenerowana stała szerokość)

  • man -P cat ls (wygenerowana zmienna szerokość)

Byłem na systemie GNU Linux


1

Inny kąt: podobny do odpowiedzi Tony'ego.

Możesz również przekierować dane wyjściowe man do pliku i przeglądać go za pomocą swojego ulubionego edytora tekstu, a nawet dodawać do niego zakładki, komentarze itp.

man bash  > bashman.txt

Mam kopię strony podręcznika użytkownika bash, a także tylko sekcje dotyczące kontroli przepływu bash i flag bash zapisanych jako pliki tekstowe w moim katalogu bin, dzięki czemu mogę załadować je bezpośrednio do mojego edytora tekstowego (Kate) w celach informacyjnych, gdy jestem pisanie skryptów bash.


Ostrzeżenie: w zależności od systemu i strony podręcznika powyższe polecenie może spowodować formatowanie informacji i znaków kontrolnych w pliku.

Aby tego uniknąć, wykonaj czynności sugerowane w LESS='+/^TIPS' man man:

To  get a  plain  text  version  of a man page, without backspaces and
underscores, try

  # man foo | col -b > foo.mantxt

1
@Wildcard - Dzięki. Nie wiedziałem o tym.
Joe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.