Cóż, to mój bardzo osobisty sposób na czytanie stron podręcznika:
Manpager
Po otwarciu manpage pomocą man
polecenia zostaną wyświetlone dane wyjściowe / wydanego przez less
lub more
poleceń, lub jakiejkolwiek innej komendy, która zostanie ustawiony jako pager (MANPAGER).
Jeśli używasz Linuksa, zapewne masz zapewnioną infrastrukturę man już skonfigurowaną do używania /usr/bin/less -is
(chyba że zainstalowałeś jakieś minimalne dystrybucje) jako man(1)
, wyjaśnij to w sekcji Opcje:
-P pager
Specify which pager to use. This option overrides the MANPAGER environment variable,
which in turn overrides the PAGER variable. By default, man uses /usr/bin/less -is.
W FreeBSD i OpenBSD jest to tylko kwestia edycji MANPAGER
zmiennej środowiskowej, ponieważ będą one najczęściej używane more
, a niektóre funkcje, takie jak wyszukiwanie i podświetlanie tekstu, mogą być niedostępne.
Jest to dobra odpowiedź na pytanie, jakie różnice more
, less
a most
nie tutaj (nie używany most
). Możliwość przewijania do tyłu i przewijania do przodu strona po stronie Spacelub w obie strony linia za pomocą ↓lub ↑(także przy użyciu vi
powiązań ji k) jest niezbędna podczas przeglądania stron podręcznika. Naciśnij hpodczas używania, less
aby wyświetlić podsumowanie dostępnych poleceń.
I dlatego sugeruję, abyś używał go less
jako swojego pagera. less
mieć kilka podstawowych funkcji, które będą używane podczas tej odpowiedzi.
Jak sformatowane jest polecenie?
Konwencje narzędziowe : specyfikacja grupy bazowej Open Group Issue 7 - IEEE Std 1003.1, 2013 Edition. Powinieneś odwiedzić ten link, zanim spróbujesz zrozumieć stronę podręcznika. To internetowe odniesienie opisuje składnię argumentów standardowych narzędzi i wprowadza terminologię używaną w POSIX.1-2017 do opisywania argumentów przetwarzanych przez narzędzia. Spowoduje to również pośrednie poinformowanie Cię o prawdziwym znaczeniu słów takich jak parametry, argumenty, opcja argumentów ...
Po zrozumieniu zapisów konwencji narzędziowych głowa dowolnej strony będzie wyglądać mniej tajemniczo:
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
Pamiętaj o tym, co chcesz zrobić.
Kiedy robiłeś swoje badania na swój temat xargs
, zrobiłeś to celowo, prawda? Miałeś specyficzną potrzebę czytania standardowego wyjścia i wykonywania poleceń na podstawie tego wyjścia.
Ale kiedy nie wiem, które polecenie chcę?
Użyj man -k
lub apropos
(są równoważne). Jeśli nie wiem jak znaleźć plik: man -k file | grep search
. Przeczytaj opisy i znajdź taki, który będzie lepiej pasował do twoich potrzeb. Przykład:
apropos -r '^report'
bashbug (1) - report a bug in bash
df (1) - report file system disk space usage
e2freefrag (8) - report free space fragmentation information
filefrag (8) - report on file fragmentation
iwgetid (8) - Report ESSID, NWID or AP/Cell Address of wireless network
kbd_mode (1) - report or set the keyboard mode
lastlog (8) - reports the most recent login of all users or of a given user
pmap (1) - report memory map of a process
ps (1) - report a snapshot of the current processes.
pwdx (1) - report current working directory of a process
uniq (1) - report or omit repeated lines
vmstat (8) - Report virtual memory statistics
Apropos domyślnie działa z wyrażeniami regularnymi ( man apropos
przeczytaj opis i dowiedz się, co -r
działa), aw tym przykładzie szukam każdej strony podręcznej, w której opis zaczyna się od „raport”.
Aby wyszukać informacje związane z odczytywaniem standardowego przetwarzania danych wejściowych / wyjściowych i osiąganiem xargs
jako możliwej opcji:
man -k command| grep input
xargs (1) - build and execute command lines from standard input
Zawsze czytaj DESCRIPTION
przed rozpoczęciem
Nie spiesz się i przeczytaj opis. Po przeczytaniu opisu xargs
polecenia dowiemy się, że:
xargs
czyta ze STDIN i wykonuje potrzebne polecenie. Oznacza to również, że będziesz musiał mieć trochę wiedzy na temat działania standardowego wejścia i manipulowania nim za pomocą potoków w celu łączenia poleceń
- Domyślnym zachowaniem jest takie zachowanie
/bin/echo
. Daje to małą wskazówkę, że jeśli chcesz połączyć więcej niż jedną xargs
, nie musisz używać echa do drukowania.
- Dowiedzieliśmy się również, że nazwy plików unix mogą zawierać puste i nowe wiersze, że może to stanowić problem, a argument
-0
jest sposobem zapobiegania eksplozji za pomocą separatorów znaków o wartości zerowej. Opis ostrzega, że polecenie użyte jako dane wejściowe również musi obsługiwać tę funkcję i że GNU find
ją obsługuje. Wspaniały. Używamy dużo find z xargs
.
xargs
zatrzyma się po osiągnięciu stanu wyjścia 255.
Niektóre opisy są bardzo krótkie i to na ogół dlatego, że oprogramowanie działa w bardzo prosty sposób. Nawet nie myśl o pominięciu tej części strony ;)
Inne rzeczy, na które należy zwrócić uwagę ...
Wiesz, że możesz wyszukiwać pliki za pomocą find
. Istnieje mnóstwo opcji i jeśli tylko spojrzysz na SYNOPSIS
, zostaniesz nimi przytłoczony. To tylko wierzchołek góry lodowej. Z wyłączeniem NAME
, SYNOPSIS
i DESCRIPTION
, będziesz mieć następujące sekcje:
AUTHORS
: ludzie, którzy utworzyli polecenie lub pomogli w jego utworzeniu.
BUGS
: wyświetla wszelkie znane wady. Mogą to być jedynie ograniczenia implementacyjne.
ENVIRONMENT
: Aspekty powłoki, na które może mieć wpływ polecenie, lub zmienne, które zostaną użyte.
EXAMPLES
lub NOTES
: Wyjaśniający.
REPORTING BUGS
: Z kim będziesz musiał się skontaktować, jeśli znajdziesz błędy w tym narzędziu lub w jego dokumentacji.
COPYRIGHT
: Osoba, która utworzyła i zrzeka się o oprogramowaniu. Wszystko związane z licencją samego oprogramowania.
SEE ALSO
: Inne polecenia, narzędzia lub aspekty robocze związane z tym poleceniem i nie mieszczące się w żadnej z pozostałych sekcji.
Najprawdopodobniej znajdziesz interesujące informacje na temat aspektów narzędzia w sekcji przykładów / notatek.
Przykład
W poniższych krokach wezmę find
jako przykład, ponieważ jego pojęcia są „prostsze” niż xargs
wyjaśnienie (jedno polecenie znajduje pliki, a drugie dotyczy standardowego i potokowego wykonywania innych danych wyjściowych polecenia). Udawajmy, że nie wiemy nic (lub bardzo mało) o tym poleceniu.
Mam konkretny problem: muszę szukać każdego pliku z .jpg
rozszerzeniem i 500KiB (KiB = 1024 bajty, potocznie zwany kibibajtem) lub więcej w folderze serwera ftp.
Najpierw otwórz instrukcję: man find
. SYNOPSIS
Jest szczupły. Poszukajmy rzeczy w podręczniku: Wpisz /plus żądane słowo ( size
). Zindeksuje wiele wpisów -size
, które policzą określone rozmiary. Utknąć. Nie wiem, jak wyszukiwać za pomocą „więcej niż” lub „mniej niż” danego rozmiaru, a mężczyzna mi tego nie pokazuje.
Spróbujmy i poszukaj następnego wpisu znalezionego przez uderzenie n. DOBRZE. Znalazłem coś wartego uwagi: find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Być może ten przykład pokazuje nam, że dzięki -size +100M
niemu znajdziesz pliki o rozmiarze 100 MB lub większym. Jak mogę potwierdzić? Podchodzenie do głowy strony i szukanie innych słów.
Ponownie spróbujmy tego słowa greater
. Naciśnięcie gzaprowadzi nas do głowy strony. /greater
, a pierwszy wpis to:
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
Brzmi wspaniale. Wygląda na to, że ten blok instrukcji potwierdził nasze podejrzenia. Dotyczy to jednak nie tylko rozmiarów plików. Odnosi się to do wszystkich, n
które można znaleźć na tej stronie (jak powiedziano: „Argumenty liczbowe można określić jako”).
Dobry. Pozwól nam znaleźć sposób, aby filtrować według nazwy: g /insensitive
. Dlaczego? Niewrażliwy? Wtf? Mamy hipotetyczny serwer FTP, gdzie ludzie „że inne OS” może dać nazwę pliku z rozszerzeniem jak .jpg
, .JPG
, .JpG
. Doprowadzi nas to do:
-ilname pattern
Like -lname, but the match is case insensitive. If the -L
option or the -follow option is in effect, this test returns
false unless the symbolic link is broken.
Jednak po wyszukaniu lname
zobaczysz, że będzie to tylko wyszukiwanie dowiązań symbolicznych. Chcemy prawdziwych plików. Następny wpis:
-iname pattern
Like -name, but the match is case insensitive. For example, the
patterns `fo*' and `F??' match the file names `Foo', `FOO',
`foo', `fOo', etc. In these patterns, unlike filename expan‐
sion by the shell, an initial '.' can be matched by `*'. That
is, find -name *bar will match the file `.foobar'. Please note
that you should quote patterns as a matter of course, otherwise
the shell will expand any wildcard characters in them.
Wspaniały. Nie muszę nawet czytać, -name
żeby zobaczyć, że -iname
jest to wersja tego argumentu bez rozróżniania wielkości liter. Złóżmy polecenie:
Komenda: find /ftp/dir/ -size +500k -iname "*.jpg"
Co jest tutaj dorozumiane: Wiedza, że symbol wieloznaczny ?
reprezentuje „dowolny znak w jednej pozycji” i *
reprezentuje „zero lub więcej dowolnych znaków”. Ten -name
parametr daje podsumowanie tej wiedzy.
Wskazówki dotyczące wszystkich poleceń
Niektóre opcje, mnemoniki i „styl składni” poruszają się po wszystkich poleceniach, przez co kupujesz trochę czasu, nie otwierając wcale strony podręcznika. Poznaje się je poprzez praktykę, a najczęściej są to:
- Zasadniczo
-v
oznacza pełny. -vvv
jest odmianą „bardzo bardzo gadatliwą” w niektórych programach.
- Zgodnie ze standardem POSIX można na ogół zestawiać jeden argument myślnika. Przykład:
tar -xzvf
, cp -Rv
.
- Ogólnie
-R
i / lub -r
oznacza rekurencyjne.
- Prawie wszystkie polecenia mają krótką pomoc dotyczącą tej
--help
opcji.
--version
pokazuje wersję oprogramowania.
-p
, narzędzia do kopiowania lub przenoszenia oznaczają „zachowaj uprawnienia”.
-y
oznacza TAK lub w większości przypadków „kontynuuj bez potwierdzenia”.
Pamiętaj, że powyższe nie zawsze są prawdziwe. Na przykład -r
przełącznik może oznaczać bardzo różne rzeczy dla różnych programów. Zawsze dobrze jest sprawdzić i upewnić się, kiedy polecenie może być niebezpieczne, ale są to typowe wartości domyślne.
Domyślne wartości poleceń.
Na stronie tej odpowiedzi zobaczyliśmy, że less -is
jest to pager man
. Domyślne zachowanie poleceń nie zawsze jest wyświetlane w oddzielnej sekcji na stronach podręcznika lub w sekcji, która jest najwyżej umieszczona.
Będziesz musiał przeczytać opcje, aby dowiedzieć się o ustawieniach domyślnych, lub jeśli masz szczęście, pisanie /pager
doprowadzi cię do tych informacji. Wymaga to również znajomości koncepcji pagera (oprogramowania przewijającego stronę podręcznika), a to jest rzecz, którą uzyskasz dopiero po przeczytaniu wielu stron podręcznika.
Dlaczego to takie ważne? Otworzy to twoją percepcję, jeśli zauważysz różnice w przewijaniu i zachowaniu kolorów podczas czytania man(1)
na przykład w systemie Linux ( less -is
pager) lub FreeBSD man(1)
.
A co ze SYNOPSIS
składnią?
Po uzyskaniu wszystkich informacji potrzebnych do wykonania polecenia możesz połączyć opcje, argumenty opcji i operandy, aby wykonać zadanie. Przegląd pojęć:
- Opcje to przełączniki, które określają zachowanie polecenia. „ Rób to ”, „ nie rób tego ” lub „ postępuj w ten sposób ”. Często nazywane przełącznikami.
- Argumenty opcji są używane w większości przypadków, gdy opcja nie jest binarna (włączona / wyłączona), np. Podczas
-t
montowania, która określa typ systemu plików ( -t iso9660
, -t ext2
). „ Zrób to z zamkniętymi oczami ” lub „ nakarm zwierzęta, ale tylko lwy ”. Zwane także argumentami.
- Operandy to rzeczy, od których chcesz, aby to polecenie działało. Jeśli używasz
cat file.txt
, operand jest plikiem w twoim bieżącym katalogu, a jego zawartość zostanie pokazana na STDOUT
. ls
to polecenie, w którym operand jest opcjonalny. Trzy kropki po operandzie domyślnie informują, że cat
możesz działać na wielu operandach (plikach) jednocześnie. Możesz zauważyć, że niektóre polecenia ustawiły typ operandu, który będzie używany. Przykład:cat [OPTION] [FILE]...
Powiązane rzeczy z streszczenia:
Kiedy ta metoda nie zadziała?
- Strony, które nie mają przykładów
- Strony, na których opcje mają krótkie wyjaśnienie
- Podczas korzystania z ogólnych słów kluczowych takich jak
and
, to
, for
wewnątrz manpages
- Strony, które nie są zainstalowane. Wydaje się to oczywiste, ale jeśli nie masz
lftp
(i stron podręcznika) zainstalowanych, nie możesz wiedzieć, że jest to odpowiednia opcja dla bardziej wyrafinowanego klienta ftp poprzez uruchomienieman -k ftp
W niektórych przypadkach przykłady będą dość proste i będziesz musiał wykonać kilka poleceń, aby przetestować lub, w najgorszym przypadku, Google go.
Inne: Języki programowania i jego moduły:
Jeśli programujesz lub tworzysz skrypty, pamiętaj, że niektóre języki mają własne systemy stron, takie jak perl
( perldocs
), python ( pydocs
) itp., Przechowujące określone informacje o metodach / funkcjach, zmiennych, zachowaniu i inne ważne informacje o module próbujesz używać i uczyć się. Przydało mi się to, gdy tworzyłem skrypt do pobierania nieprzeczytanych wiadomości e-mail IMAP za pomocą perl Mail::IMAPClient
modułu.
Będziesz musiał dowiedzieć się o tych konkretnych stronach, korzystając z man -k
wyszukiwarki online. Przykłady:
[root@host ~]# man -k doc | grep perl
perldoc (1) - Look up Perl documentation in Pod format
[root@host ~]# perldoc Mail::IMAPClient
IMAPCLIENT(1) User Contributed Perl Documentation IMAPCLIENT(1)
NAME
Mail::IMAPClient - An IMAP Client API
SYNOPSIS
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => ’localhost’,
User => ’username’,
Password => ’password’,
Ssl => 1,
Uid => 1,
);
... mnóstwo innych rzeczy tutaj, z sekcjami jak zwykła strona podręcznika ...
Z pythonem:
[root@host ~]# pydoc sys
Help on built-in module sys:
NAME
sys
FILE
(built-in)
MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html
DESCRIPTION
This module provides access to some objects used or maintained by the
interpreter and to functions that interact strongly with the interpreter.
...again, another full-featured manpage with interesting info...
Lub funkcja help()
wewnątrz powłoki Pythona, jeśli chcesz przeczytać więcej szczegółów na temat jakiegoś obiektu:
nwildner@host:~$ python3.6
Python 3.6.7 (default, Oct 21 2018, 08:08:16)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help(round)
Help on built-in function round in module builtins:
round(...)
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
Bonus:wtf
komenda może pomóc w akronimów i działa jak whatis
gdyby nie skrótem na jego bazie znajduje się, ale to, co szukasz jest częścią bazy danych człowieka. W Debianie to polecenie jest częścią bsdgames
pakietu. Przykłady:
nwildner@host:~$ wtf rtfm
RTFM: read the fine/fucking manual
nwildner@host:~$ wtf afaik
AFAIK: as far as I know
nwildner@host:~$ wtf afak
Gee... I don't know what afak means...
nwildner@host:~$ wtf tcp
tcp: tcp (7) - TCP protocol.
nwildner@host:~$ wtf systemd
systemd: systemd (1) - systemd system and service manager