Що ж, це мій особистий спосіб читати керівництво:
Manpager
При відкритті довідкової сторінки , використовуючи man
команду, вихід буде відображатися / наданий less
або more
командами, або будь-який інший командою , яка буде встановлена в якості пейджера (manpager).
Якщо ви користуєтесь Linux, вам, ймовірно, надається ваша людська інфраструктура, яка вже налаштована для використання /usr/bin/less -is
(якщо ви не встановили мінімальний дистрибутив) man(1)
, поясніть в розділі «Параметри»:
-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.
На FreeBSD та OpenBSD - це лише питання редагування MANPAGER
змінної середовища, оскільки вони в основному використовуватимуться more
, а деякі функції, такі як пошук та виділення тексту, можуть бути відсутні.
Є гарна відповідь на питання, які відмінності more
, less
і most
є тут (ніколи не використовувався most
). Можливість прокручування назад і прокручування вперед за сторінкою Spaceабо в обидва способи по рядку з ↓або ↑(також, використовуючи vi
прив’язки jта k), є важливою під час перегляду вручну. Натисніть hпід час використання, less
щоб побачити підсумок доступних команд.
І тому я пропоную вам використовувати less
як свого пейджера. less
мають деякі істотні ознаки, які будуть використані під час цієї відповіді.
Як формується команда?
Умовні угоди : Технічні характеристики бази відкритої групи Випуск 7 - IEEE Std 1003.1, видання 2013 року. Ви повинні відвідати це посилання, перш ніж намагатися зрозуміти сторінку сторінки. Ця онлайн-довідка описує синтаксис аргументів стандартних утиліт та вводить термінологію, яка використовується протягом POSIX.1-2017 для опису аргументів, оброблених утилітами. Це також опосередковано інформує вас про реальне значення таких слів, як параметри, аргументи, параметр аргументу ...
Заголовок будь-якої сторінки буде виглядати менш крикливим після розуміння позначень умовних угод:
utility_name[-a][-b][-c option_argument]
[-d|-e][-f[option_argument]][operand...]
Майте на увазі, що ви хочете зробити.
Коли ви робили свої дослідження про xargs
вас, ви робили це для козла, правда? У вас була специфічна потреба в тому, щоб читати стандартний вихід і виконувати команди на основі цього виводу.
Але коли я не знаю, яку команду я хочу?
Використовуйте man -k
або apropos
(вони еквівалентні). Якщо я не знаю , як знайти файл: man -k file | grep search
. Прочитайте описи та знайдіть той, який краще відповідатиме вашим потребам. Приклад:
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 працює з регулярними виразами за замовчуванням, ( man apropos
прочитайте опис і дізнайтеся, що -r
це робить), і в цьому прикладі я шукаю кожну сторінку, де опис починається з "звіту".
Щоб шукати інформацію, пов’язану з читанням стандартної обробки вводу / виводу та досягнення xargs
як можливого варіанту:
man -k command| grep input
xargs (1) - build and execute command lines from standard input
Завжди читайте попереднє DESCRIPTION
перед початком
Знайдіть час і прочитайте опис. Просто прочитавши опис xargs
команди, ми дізнаємось, що:
xargs
читає з STDIN і виконує необхідну команду. Це також означає, що вам потрібно мати певні знання про те, як працює стандартний ввід, і як маніпулювати ним через труби до ланцюгових команд
- Поведінка за замовчуванням - діяти так
/bin/echo
. Це дає вам невелику підказку, що якщо вам потрібно ланцюжок більше, ніж один xargs
, вам не потрібно використовувати ехо для друку.
- Ми також дізналися, що імена файлів unix можуть містити порожні та нові рядки, що це може бути проблемою, і аргумент
-0
- це спосіб запобігти вибуху речі за допомогою нульових роздільників символів. Опис попереджає, що команда, яка використовується як вхід, також повинна підтримувати цю функцію, і GNU find
підтримує її. Чудово. Ми використовуємо багато знахідки xargs
.
xargs
припиниться, якщо буде досягнуто статусу виходу 255.
Деякі описи дуже короткі, і це, як правило, тому, що програмне забезпечення працює дуже просто. Навіть не думайте пропускати цю частину сторінки ;)
Інші речі, на які слід звернути увагу ...
Ви знаєте, що можете шукати файли, використовуючи find
. Є тонна варіантів, і якщо ви тільки подивитеся на SYNOPSIS
, ви будете переповнені тими. Це лише верхівка айсберга. Виключаючи NAME
, SYNOPSIS
та DESCRIPTION
, ви матимете такі розділи:
AUTHORS
: люди, які створили команду або допомогли їй у створенні.
BUGS
: перелічує всі відомі дефекти. Можуть бути лише обмеження щодо впровадження.
ENVIRONMENT
: Аспекти вашої оболонки, на які може вплинути команда, або змінні, які будуть використовуватися.
EXAMPLES
або NOTES
: Пояснення.
REPORTING BUGS
: До кого вам доведеться зв’язатися, якщо ви знайдете помилки на цьому інструменті або в його документації.
COPYRIGHT
: Особа, яка створила та відмовилася від програмного забезпечення. Все пов'язане з ліцензією самого програмного забезпечення.
SEE ALSO
: Інші команди, інструменти або робочі аспекти, пов'язані з цією командою, і не можуть вміститися в жодному з інших розділів.
Ви, ймовірно, знайдете цікаву інформацію про потрібні аспекти інструменту в розділі прикладів / приміток.
Приклад
На наступних кроках я візьмусь find
як приклад, оскільки це поняття "простіше", ніж xargs
пояснювати (одна команда знаходить файли, а інша стосується stdin та конвеєрного виконання іншого виводу команди). Давайте просто зробимо вигляд, що ми нічого не знаємо (або дуже мало) про цю команду.
У мене є конкретна проблема, яка полягає в тому, що я повинен шукати кожен файл із .jpg
розширенням та розміром 500 Кбіт (KiB = 1024 байт, що зазвичай називається кібібайт), або більше розміром у папці сервера ftp.
По- перше, відкрити керівництво: man find
. SYNOPSIS
Тонкий. Давайте шукатимемо речі в посібнику: Введіть /плюс слово, яке ви хочете ( size
). Він буде індексувати безліч записів, -size
які враховуватимуть конкретні розміри. Застряг. Не знаю, як шукати заданий розмір з "більше" або "менше", і чоловік мені цього не показує.
Давайте спробуємо і пошукаємо наступний запис, знайдений натисканням n. ГАРАЗД. Знайшов щось цікаве : find
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)
. Можливо, цей приклад показує нам, що з -size +100M
ним ви знайдете файли зі 100 МБ або більше. Як я міг підтвердити? Підійти до голови сторінки та шукати інші слова.
Знову ж спробуємо слово greater
. Натискання gпризведе нас до голови сторінки. /greater
, і перший запис:
Numeric arguments can be specified as
+n for **greater** than n,
-n for less than n,
n for exactly n.
Звучить чудово. Здається, цей блок посібника підтвердив те, про що ми підозрювали. Однак це стосується не лише розмірів файлів. Він застосовуватиметься до будь-якого, n
що може бути знайдено на цій сторінці сторінки (як сказано у фразі: "Числові аргументи можна вказати як").
Добре. Знайдемо спосіб фільтрації по імені: g /insensitive
. Чому? Нечутливий? Wtf? У нас є гіпотетичний FTP - сервер, де «що інші ОС» люди могли б дати ім'я файлу з розширенням , як .jpg
, .JPG
, .JpG
. Це призведе до:
-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.
Однак після пошуку lname
ви побачите, що це буде шукати лише символічні посилання. Ми хочемо справжні файли. Наступний запис:
-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.
Чудово. Мені навіть не потрібно читати, -name
щоб побачити, що -iname
це справді нечутлива версія цього аргументу. Дозволяє зібрати команду:
Команда: find /ftp/dir/ -size +500k -iname "*.jpg"
Що тут мається на увазі: Знання про те, що підстановочний знак ?
представляє "будь-який символ на одній позиції" і *
являє "нуль або більше будь-якого символу". -name
Параметр дасть вам короткий виклад цього знання.
Поради, які стосуються всіх команд
Деякі параметри, мнемоніка та "синтаксичний стиль" подорожують усіма командами, завдяки чому ви купуєте певний час, не потрібно відкривати сторінку сторінки. Вони засвоюються на практиці, і найпоширеніші:
- Взагалі,
-v
означає багатослівний. -vvv
є варіантом "дуже дуже багатослівний" для деяких програм.
- Після стандарту POSIX, як правило, один аргумент тире може бути складений. Приклад:
tar -xzvf
, cp -Rv
.
- Як правило,
-R
та / або -r
означає рекурсивний характер.
- Майже у всіх командах є коротка довідка з
--help
опцією.
--version
показує версію програмного забезпечення.
-p
, утиліта копіювання чи переміщення означає "зберегти дозволи".
-y
означає "ТАК" або "продовжувати без підтвердження" у більшості випадків.
Зауважте, що вищезазначене не завжди відповідає дійсності. Наприклад, -r
комутатор може означати дуже різні речі для різних програм. Це завжди гарна ідея перевірити і переконатися, коли команда може бути небезпечною, але це звичайні за замовчуванням.
Значення команд за замовчуванням.
Під час цієї відповіді ми побачили, що less -is
це пейджер man
. Поведінка команд за замовчуванням не завжди відображається в окремому розділі на маніпуляціях або в розділі, який знаходиться в самому верхньому місці.
Вам доведеться прочитати параметри, щоб дізнатись за замовчуванням, або якщо вам пощастить, введення тексту /pager
призведе вас до цієї інформації. Це також вимагає, щоб ви знали концепцію пейджера (програмне забезпечення, яке прокручує сторінку сторінки), і це річ, яку ви придбаєте лише після прочитання безлічі рукописів.
Чому це важливо? Це відкриє ваше сприйняття, якщо під час читання man(1)
в Linux ( less -is
пейджері) або FreeBSD ви знайдете відмінності щодо поведінки прокрутки та кольорів man(1)
.
А як щодо SYNOPSIS
синтаксису?
Отримавши всю інформацію, необхідну для виконання команди, ви можете комбінувати параметри, параметри-аргументи та операнди в рядку, щоб зробити свою роботу виконаною. Огляд понять:
- Параметри - це комутатори, що диктує поведінку команди. " Зробіть це " , не робіть цього "або" дійте так ". Часто називають вимикачами.
- Параметри-параметри використовуються в більшості випадків, коли опція не є бінарною (увімкнено / вимкнено), як
-t
на mount, що вказує тип файлової системи ( -t iso9660
, -t ext2
). " Робіть це із закритими очима " або " годуйте тварин, але тільки левів ". Також називаються аргументами.
- Операнди - це те, на що ти хочеш діяти цією командою. Якщо ви використовуєте
cat file.txt
, операнд - це файл у вашому поточному каталозі, і його вміст буде показано на STDOUT
. ls
це команда, де операнд необов'язковий. Три точки після операнда неявно підказують вам, що cat
можуть діяти на кілька операндів (файлів) одночасно. Ви можете помітити, що деякі команди встановили, який тип операнду він буде використовувати. Приклад:cat [OPTION] [FILE]...
Пов’язані матеріали з резюме:
Коли цей метод не буде працювати?
- Настанови, які не мають прикладів
- Інструкції, де варіанти мають коротке пояснення
- Коли ви використовуєте загальні ключові слова, як
and
, наприклад to
, for
всередині manpages
- Керування, які не встановлені. Це здається очевидним, але якщо у вас немає
lftp
(і його manpages) не встановлено, ви не можете знати, що це підходящий варіант, як більш досконалий ftp-клієнт, запустившиman -k ftp
У деяких випадках приклади будуть досить простими, і вам доведеться виконати кілька команд вашої команди, щоб перевірити, або, в гіршому випадку, Google.
Інше: Мови програмування та його модулі:
Якщо ви програмуєте або просто створюєте сценарії, майте на увазі, що в деяких мовах є власні системи управління, як-от perl
( perldocs
), python ( pydocs
) тощо, що містить конкретну інформацію про методи / функції, змінні, поведінку та іншу важливу інформацію про модуль ви намагаєтеся використовувати і вчитися. Це було мені корисно, коли я створював сценарій для завантаження непрочитаних електронних листів IMAP за допомогою perl Mail::IMAPClient
модуля.
Вам доведеться з’ясувати ці конкретні програми, використовуючи man -k
або шукаючи в Інтернеті. Приклади:
[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,
);
... тонни інших речей тут, з такими розділами, як звичайна карта сторінки ...
З пітоном:
[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...
Або, help()
функція всередині оболонки python, якщо ви хочете прочитати докладніші відомості про якийсь об'єкт:
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.
Бонус:wtf
команда може допомогти вам з абревіатурами і вона працює , як whatis
якщо б не абревіатури на ньому немає бази даних знайдена, але то , що ви шукаєте є частиною бази даних людини. У Debian ця команда є частиною bsdgames
пакету. Приклади:
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