Как я использую страницы справочника, чтобы изучить, как использовать команды?

Ваша версия Ubuntu является древней. Я сомневаюсь, что последняя версия Google Chrome будет работать на нем.

Просто обновите до более новой версии Ubuntu, и Chrome должен установить гладко с веб-сайта Google.

93
20.03.2017, 12:04
11 ответов

Что ж, это мой очень личный способ читать справочные страницы:

Справочная страница

Когда вы открываете справочную страницу с помощью man , вывод будет отображаться / визуализироваться командами less или more , либо любой другой командой, которая будет установлена ​​в качестве вашего пейджера (manpager).

Если вы используете Linux, ваша инфраструктура man, вероятно, уже настроена на использование / 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 , а также некоторые функции, например поиск и выделение текста могли отсутствовать.

Есть хороший ответ на вопрос, какие различия больше , меньше и большинство имеют здесь (никогда не использовались ] самый ). Возможность прокрутки назад и вперед по странице с помощью Пробел или в обе стороны по строке с помощью или (также, используя vi привязки j и k ) необходимы при просмотре страниц руководства.Нажмите h при использовании меньше , чтобы увидеть сводку доступных команд.

Вот почему я предлагаю вам использовать less в качестве вашего man-пейджера. less имеют некоторые важные особенности, которые будут использоваться в этом ответе.

Как форматируется команда?

Соглашения об утилитах : Базовые спецификации Open Group, выпуск 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

Всегда читайте ОПИСАНИЕ перед запуском

Найдите время и прочтите описание. Просто прочитав описание команды xargs , мы узнаем, что:

  • xargs читает из STDIN и выполняет необходимую команду. Это также означает, что вам нужно будет знать, как работает стандартный ввод, и как управлять им через каналы в цепочку команд
  • Поведение по умолчанию - действовать как / bin / echo . Это дает вам небольшой совет: если вам нужно связать более одного xargs , вам не нужно использовать echo для печати.
  • Мы также узнали, что имена файлов unix могут содержать пробелы и символы новой строки, что это может быть проблемой, а аргумент -0 - это способ предотвратить взрыв, используя разделители нулевых символов. Описание предупреждает вас, что команда, используемая в качестве входных данных, также должна поддерживать эту функцию, и что GNU find поддерживает ее. Отлично. Мы часто используем find с xargs .
  • xargs остановится, если будет достигнут статус выхода 255.

Некоторые описания очень короткие, как правило, потому, что программа работает очень просто. Даже не думайте пропустить эту часть справочной страницы ;)

Другие вещи, на которые следует обратить внимание ...

Вы знаете, что вы можете искать файлы с помощью find . Есть масса вариантов, и если вы посмотрите только на ОБЗОР , вы будете поражены ими. Это всего лишь верхушка айсберга. Исключая НАЗВАНИЕ , ОБЗОР и ОПИСАНИЕ , у вас будут следующие разделы:

  • АВТОРЫ : люди, которые создавали или помогали в создании команды .

  • ОШИБКИ : перечисляются все известные дефекты. Могли быть только ограничения реализации.

  • ОКРУЖЕНИЕ : аспекты вашей оболочки, на которые может повлиять команда, или переменные, которые будут использоваться.

  • ПРИМЕРЫ или ПРИМЕЧАНИЯ : Не требуют пояснений.

  • СООБЩЕНИЕ ОБ ОШИБКАХ : С кем вам нужно будет связаться, если вы обнаружите ошибки в этом инструменте или в его документации.

  • АВТОРСКИЕ ПРАВА : Лицо, создавшее программное обеспечение и отказывающееся от ответственности в отношении него. Все связано с лицензией самого ПО.

  • СМОТРИ ТАКЖЕ : другие команды, инструменты или рабочие аспекты, которые связаны с этой командой и не могут уместиться ни в одном из других разделов.

Скорее всего, вы найдете интересную информацию о тех аспектах, которые вам нужны в инструменте, в разделе примеров / примечаний.

Пример

На следующих шагах я возьму find в качестве примера, поскольку его концепции «проще», чем xargs для объяснения (одна команда находит файлы и другой занимается стандартным вводом и конвейерным выполнением другого вывода команд).Давайте просто представим, что мы ничего (или очень мало) знаем об этой команде.

У меня есть конкретная проблема: я должен искать каждый файл с расширением .jpg и размером 500 КБ (KiB = 1024 байт, обычно называемый кибибайт) или более внутри Папка ftp-сервера.

Сначала откройте руководство: человек находит . SYNOPSIS является тонким. Давайте поищем что-нибудь в руководстве: Введите / плюс нужное слово ( размер ). Он проиндексирует множество записей -size , которые будут считать определенные размеры. Застрял. Не знаю, как искать с «больше» или «меньше» заданного размера, и этот мужчина мне этого не показывает.

Давайте попробуем и поищем следующую найденную запись, нажав n . ОК. Нашел кое-что интересное: найти \ (-size + 100M -fprintf /root/big.txt% -10s% p \ n \) . Возможно, этот пример показывает нам, что с -size + 100M он найдет файлы размером 100MB или более. Как я могу подтвердить? Переход к началу страницы руководства и поиск других слов.

Снова попробуем слово больше . Нажатие g приведет нас к началу страницы руководства. / больше , и первая запись:

 Numeric arguments can be specified as

    +n     for **greater** than n,

    -n     for less than n,

     n      for exactly n.

Звучит отлично. Похоже, что этот блок инструкции подтвердил наши подозрения. Однако это относится не только к размерам файлов. Он будет применяться к любому n , который можно найти на этой странице руководства (как сказано во фразе: «Числовые аргументы могут быть указаны как»).

Хорошо. Давайте найдем способ фильтрации по имени: g / нечувствительный . Почему? Нечувствительный? 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 .
  • - версия показывает версию программного обеспечения.
  • -p при копировании или перемещении утилит означает «сохранить разрешения».
  • -y означает ДА ​​или в большинстве случаев «продолжить без подтверждения».

Обратите внимание, что вышесказанное не всегда верно. Например, переключатель -r может означать очень разные вещи для разных программ. Всегда полезно проверить и убедиться, что команда может быть опасной, но это стандартные значения по умолчанию.

Значения команд по умолчанию.

На пейджере этого ответа мы увидели, что less -is - это пейджер man . Поведение команд по умолчанию не всегда отображается в отдельном разделе на страницах руководства или в самом верхнем разделе.

Вам нужно будет прочитать варианты, чтобы узнать значения по умолчанию, или, если вам повезет, набрав / пейджер , вы попадете к этой информации. Это также требует, чтобы вы знали концепцию пейджера (программное обеспечение, которое прокручивает справочную страницу), и это то, что вы получите только после прочтения большого количества справочных страниц.

Почему это важно? Это раскроет ваше восприятие, если вы обнаружите различия в поведении прокрутки и цвета при чтении man (1) в Linux ( меньше -is пейджер) или FreeBSD man (1) например.

А как насчет синтаксиса SYNOPSIS ?

После получения всей информации, необходимой для выполнения команды, вы можете комбинировать параметры, параметры-аргументы и операнды в строке, чтобы выполнить свою работу. Обзор концепций:

  • Параметры - это переключатели, которые определяют поведение команды. « Сделайте это » « не делайте этого » или « действуйте таким образом ». Часто называют переключателями.
  • Параметры-аргументы используются в большинстве случаев, когда параметр не двоичный (включен / выключен), например -t при монтировании, который указывает тип {{1} } файловая система ( -t iso9660 , -t ext2 ). « Делайте это с закрытыми глазами » или « кормите животных, но только львов ». Также называется аргументами.
  • Операнды - это то, над чем должна действовать эта команда. Если вы используете cat file.txt , операндом будет файл внутри вашего текущего каталога , и его содержимое будет показано на STDOUT . ls - это команда , в которой операнд является необязательным. Три точки после операнда неявно указывают на то, что cat может одновременно воздействовать на несколько операндов (файлов) . Вы можете заметить, что некоторые команды устанавливают, какой тип операнда он будет использовать. Пример: cat [OPTION] [FILE] ...

Связанный синопсис:

Когда этот метод не будет работать?

  • Управляющие страницы, на которых нет примеров
  • Страницы с краткими пояснениями к параметрам
  • При использовании общих ключевых слов, таких как и , от до , для внутри страниц руководства
  • Страницы руководства, которые не установлены . Это кажется очевидным, но если у вас не установлен lftp (и его справочные страницы), вы не можете знать, что это подходящий вариант в качестве более сложного ftp-клиента, запустив man -k ftp

В некоторых случаях примеры будут довольно простыми, и вам придется выполнить несколько команд для проверки или, в худшем случае, погуглить.

Другое: Языки программирования и их модули:

Если вы программируете или просто создаете сценарии, имейте в виду, что некоторые языки имеют свои собственные системы управления страницами, например 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,
         );

... тонны другого материала здесь, с разделами, такими как обычная страница руководства ...

С python:

[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 , если в базе данных не найдено аббревиатуры , но то, что вы ищете, является частью базы данных man. В 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
102
27.01.2020, 19:30

> Я ищу помощь в интерпретации страницы человека, чтобы понять сложные команды.

Я думаю, что это здесь недоразумение. Что делает Linux / Unix настолько мощным, это то, что вы можете построить очень длинные и эффективные команды E.G. Перенаправление stdout одной команды (здесь находит ) к stdin другого (здесь xargs через трубу ( | ). Следовательно, поскольку Random832 правильно сказано, вы не найдете ни одного намагничивания, который объясняет, что делает ваш пример команды.

Я рекомендую, чтобы вы прочитали руководство Scripting Shell Shell; Руководство по расширению Bash-Scripting - отличный документ. Пожалуйста, не пугайтесь этим; Овладение Linux требует годов и является бесконечным процессом, но вы можете узнать основы в разумное количество времени.

Тогда обратитесь к Ampages, когда вам нужно знать детали определенной команды.

После того, как у вас есть гистор, CommandLinefu и также стоит читать с одним вкладышами , чтобы получить хорошие примеры.

0
27.01.2020, 19:30

Одним из ключевых, чтобы помнить, что вы не можете посмотреть только на руководство для одной команды, в случае команд, которые выполняют другие команды.

Для вашей примерной команды

locate something | xargs -I {} bash -c "if [ -d "{}" ]; then echo {}; fi"

Вам нужна информация о не только xargs , но также bash и [ (это может быть в тесте Manpage). Вам также может потребоваться информация о вашей оболочке (вероятно, также Bash) для правил цитирования, поскольку ваша команда включает в себя сложную строку сложную цитирую. Я уже могу сказать вам, что цитируемый аргумент не прав (и неправильно таким образом, чтобы появиться только при столкновении файла с пробелами в имени); Внутренний «{}» , вероятно, должен быть '{}' .

Итак, сначала вы обратитесь к Mainpage Xargs и увидеть [- я заменил-ул.] для чего означает -I {} , а [команда [начальная- Аргументы]] Для чего Bash и все после этого значит. Тогда вы бы обратитесь к Bash Bash для чего --c и т. Д.

11
27.01.2020, 19:30

Некоторые основы для понимания синопсиса

  • каждый [foo] представляет собой необязательный аргумент или параметр.
  • когда используется синтаксис [foo [ bar ] ], вы можете использовать foo, и вы можете добавить бар. Так используется обязательный параметр
  • [ -S size ], который говорит о том, что аргумент -S ожидает обязательного размера.

Например: foo [-S size ] имя файла ...

означает

  • команда foo
  • опциональный параметр -S может быть использован, вы должны сказать размер (имя дает подсказку)
  • обязательным аргументом является имя файла (это дает подсказку, см. также man mkdir )
  • элипсис .... говорит, что вы можете использовать несколько файлов.

Чтобы понять вариант, вам все равно нужно углубиться в man-страницу (в моем примере выше, что такое -S размер )

....
21
27.01.2020, 19:30

man страницы обычно отображаются теперь с меньше . Это позволяет осуществлять поиск по ним. Я бы не стал беспокоиться о синопсисе, тем более, что у вас есть конкретная командная строка, которую вы хотите понять.

Нажмите на / и начните вводить -I, а затем Enter. Первое нажатие появится в синопсисе, второе (используйте n для следующего) получите подробное объяснение для -I.

14
27.01.2020, 19:30

Чтобы получить быструю помощь по конкретной команде, можно использовать Объяснение оболочки. Например, ваша команда . После получения первого высокого уровня понимания того, как это работает, вы должны перейти к man-страницам, как рекомендуют другие ответы.

4
27.01.2020, 19:30

Это довольно хорошо объяснено в man man :

   The following conventions apply to the SYNOPSIS section and can be used
   as a guide in other sections.

   bold text          type exactly as shown.
   italic text        replace with appropriate argument.
   [-abc]             any or all arguments within [ ] are optional.
   -a|-b              options delimited by | cannot be used together.

   argument ...       argument is repeatable.
   [expression] ...   entire expression within [ ] is repeatable.

Что касается того, как вы должны написать действительную команду из этого, ну, это не так. Синопсис полезен, если вы знаете, как работает команда. Это может помочь вам освежить вашу память. Чтобы понять, как работает команда, вам следует прочитать справочную страницу.Особенно описания опций и раздел примеров.

Иногда синопсиса бывает достаточно. Например, в man ls :

SYNOPSIS
       ls [OPTION]... [FILE]...

В других случаях это бесполезно, если вы еще не знаете, как использовать данную команду. Например, man dd :

   dd [OPERAND]...
   dd OPTION

Итак, в заключение, не волнуйтесь, если вы не получите синопсиса. Это нормально. Прочтите саму страницу руководства.

38
27.01.2020, 19:30

В дополнение к уже приведенным отличным ответам:

1) Если вас интересуют утилиты GNU, особенно такие, как sed и grep , иногда с использованием Команда info вызовет значительно расширенную версию информации о команде. sed , например, содержит подробный раздел о том, как писать регулярные выражения, и еще один раздел с некоторыми очень сложными примерами использования.

2) Это «руководство». Руководство в первую очередь предназначено для того, чтобы помочь вам запомнить детали того, что вы уже понимаете. Он разработан таким образом, чтобы вы могли быстро получить нужную информацию и выйти из нее. (И слишком многие из них не имеют примеров использования или только тривиальные.)

Когда мне нужно узнать что-то новое, даже небольшую особенность команды, которая мне непонятна, я захожу в Интернет и ищу, используя лучшие ключевые слова, которые я могу придумать (например, Linux xargs ) и добавить слово howto , examples или tutorial . Очень часто это бывает довольно продуктивно.

Я обычно использую duckduckgo, потому что он поддерживает мою конфиденциальность, но если мне нужно больше контроля над своими поисками, я использую Google, потому что я могу указать ему, чтобы он выполнял поиск только на одном веб-сайте или возвращал результаты только за последний год. (В нем есть много других опций расширенного поиска. Вы можете их погуглить.;))

Другой совет:

Для команд, на которые я часто ссылаюсь, я сохраняю справочную страницу в текстовом файле

man bash > bashman.txt

и загружаю этот файл в другой. окно в моем текстовом редакторе, чтобы я мог листать вперед и назад, копировать и вставлять и т. д.Обычно я делаю файл только для чтения, поэтому я не могу случайно его испортить, но, поскольку это моя личная копия, я могу редактировать ее как захочу, добавляя теги, чтобы мне было легче найти раздел или даже добавление собственных заметок или примеров.

Единственным недостатком этого является то, что исходная страница руководства может быть обновлена, а моя копия статична.

6
27.01.2020, 19:30

Чтобы найти что-то конкретное в командах на справочной странице, вы можете использовать:

man echo | grep output.

А вот для поиска переключателей (например-n)надо использовать вот так:

man echo | grep -- -n
-1
20.08.2021, 12:35

Я предлагаюtldrдля всестороннего человека -подобный инструмент. Упрощенные и управляемые сообществом -справочные страницы. В Ubuntu вы можете установить его через снап, но у него есть версии и для других дистрибутивов. Он также предоставляет вам несколько распространенных примеров использования. 100% рекомендуется.

1
20.08.2021, 12:35

Есть несколько полезных инструментов, позволяющих узнать больше о командах Linux:

  1. cheatотобразит часто используемые параметры командной строки. Также вы можете добавить свой собственный command + option, который будет отображаться через cheatдля конкретной команды.
  2. Инструмент
  3. bropagesпредоставляет несколько примеров для командной строки, вы можете добавить свой собственный пример или проголосовать за данный пример после получения кода подтверждения через bro thanks. Команда, за которую необходимо проголосовать, появится в верхней части страницы bro.
2
20.08.2021, 12:35

Теги

Похожие вопросы