Каковы общепринятые значения символов, используемых для отображения синтаксиса команд?

Буферизованная/кэшированная память — это оперативная память, которая использовалась процессом -, скажем, Firefox -, но этот процесс завершился. Но системе на самом деле не нужна эта оперативная память прямо сейчас, так зачем ее сбрасывать? Кто-то может захотеть прочитать этот двоичный файл Firefox и связанные с ним библиотеки обратно в память... поэтому он хранится в кэше в ОЗУ до тех пор, пока эта ОЗУ не понадобится процессу ИЛИ Firefox (или любой другой двоичный файл )повторно -..

Вы можете проверить это, перезагрузив систему, а затем, после полной загрузки рабочего стола и т. д., запустите Firefox, Chrome, Gimp или какое-либо другое более крупное приложение и определите, сколько времени это займет. Как только он откроется, закройте его. Подождите минуту или три, возможно, проверьте через psили другие утилиты, что он действительно больше не работает. Затем запустите таймер и снова запустите его. Гораздо быстрее, да? Это связано с тем, что вместо повторного -чтения двоичных файлов/библиотек обратно в ОЗУ он просто повторно -помечает кэшированные области ОЗУ как «используемые».

1
25.09.2019, 12:27
2 ответа

Я не совсем понимаю, о чем именно вы просите. Я привожу три примера, чтобы показать, что вы правы:

 Pipelines
       A pipeline is a sequence of one or more commands separated by 
       one of thwe control operators | or |&. The format for a pipeline is:
       [time [-p]] [ ! ] command [ [|||&] command2... ]

(из руководства Bash; введите man bashв вашей оболочке)

В bash.pdf от GNU, содержащем некоторые незначительные изменения:

The format for a pipeline is
[time [-p]] [!]command1[ | or |&command2]...

И в спецификации posix:

The format for a pipeline is:
    [!] command1 [ | command2...]

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

«Оболочка» — это не «командная строка», а GNU/Linux — это не MS, так что различия складываются. Вероятно, сначала вам понадобится некоторая базовая информация о использовании оболочки Linux и о Unix в целом -, наверняка в Интернете есть информация именно для вашей ситуации. GNU/Linux не несет ответственности за объяснение основ или отличий от Windows.

Другой пример, с командой/утилитой find

man findдает это в оболочке GNU/Linux bash:

  find  [-H]  [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [ex-
   pression]

Когда вы вводите /EXPRв пейджер (или просто читаете и прокручиваете ), вы попадаете на

EXPRESSION
       The  part  of the command line after the list of starting points is the
       expression.  This is a kind of query specification...[cut]

, который приведет вас к:

 OPERATORS
       Listed in order of decreasing precedence:

       ( expr )
              Force  precedence.   Since parentheses are special to the shell,
              you will normally need to quote them.  Many of the  examples  in
              this manual page use backslashes for this purpose: `\(...\)' in-
              stead of `(...)'.

И все это может привести к сложному маленькому «своего рода запросу», например:

find -L /students/projects/myname \
    -type d '(' -name '.aaa' -o -name '*rc*' ')' -prune -o \
    -path '*/*/class_project/*/*/pikachu/*/*/bambi/b‌​ambi.txt' -print

Ищет все "bambi.txt" в определенных подпапках,пропуская другие определенные подпапки... необходимо (), чтобы выразить :"обрезать (пропустить ), если это папка и имя либо.aaa, либо содержит rc".

Затем скобки должны быть защищены от интерпретации оболочкой с помощью одинарных кавычек или обратной косой черты. В большинстве случаев -oдля ORи -aпо умолчанию для ANDдостаточно, поэтому GNU/Linux живет с этим.

-1
28.01.2020, 00:00

Вот отрывок из man 7 man-pages, в котором описываются общепринятые значения разделов на справочных страницах:

   SYNOPSIS      A brief summary of the command or function's interface.

                 For commands, this shows the syntax of  the  command  and
                 its  arguments  (including options); boldface is used for
                 as-is text and italics are used to  indicate  replaceable
                 arguments.   Brackets  ([])  surround optional arguments,
                 vertical bars (|) separate choices,  and  ellipses  (...)
                 can  be  repeated.

Я добавлю, что то, как на вашем терминале на самом деле появляются «жирный шрифт» и «курсив», — это другой вопрос. На моем терминале я получаю полужирный шрифт для as -— это текст и подчеркнутый текст для заменяемых аргументов; а на некоторых терминалах такое форматирование может вообще не получиться.

Лейтмотив:

  • Необязательные элементы заключены в квадратные скобки
  • Вертикальные полосы разделяют выбор
  • Многоточие означает, что элемент или элемент может повторяться

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

Вот пример синопсиса из справочной страницы дляgit diff:

SYNOPSIS
       git diff [options] [<commit>] [--] [<path>...]
       git diff [options] --cached [<commit>] [--] [<path>...]
       git diff [options] <commit> <commit> [--] [<path>...]
       git diff [options] <blob> <blob>
       git diff [options] [--no-index] [--] <path> <path>

Возможных опций так много, что авторы справочной страницы решили не перечислять их все в синопсисе, вместо этого просто указав [options].

Несколько строк в кратком описании объясняются тем, что существует несколько возможных (взаимоисключающих )способов использования этой конкретной команды.

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

(Н.Б. :Коммиты и большие двоичные объекты — это типы объектов, которые можно хранить в Git; большой двоичный объект представляет содержимое файла, а фиксация представляет собой состояние всего набора файлов, отслеживаемых Git. Не имеет отношения к вашему вопросу, но я упоминаю об этом, чтобы избежать загадок в терминологии.)

Другой пример, синопсис команды grep, иллюстрирует другое соглашение :слова, написанные ВСЕМИ ЗАГЛАВНЫМИ БУКВАМИ, иногда используются для обозначения заполнителя (наподобие угловых скобок на справочной странице git выше ).

SYNOPSIS
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] -e PATTERN... [FILE...]
       grep [OPTIONS] -f FILE... [FILE...]

Здесь снова есть три разных способа вызова команды grep. Из вышеизложенного видно, что:

grep apple orange pear

...означает, что apple— шаблон, а orangeи pear— имена файлов.

Точно так же вы можете видеть, что в:

grep -e apple -e orange pear grapefruit

... appleи orange— оба шаблона, а pearи grapefruit— оба файла.

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

Однако не существует абсолютных правил для символов синопсиса. Вот синопсис дляsed:

SYNOPSIS
       sed [OPTION]... {script-only-if-no-other-script} [input-file]...

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

   If no -e, --expression, -f, or --file option is given, then  the  first
   non-option  argument  is  taken  as  the  sed script to interpret.  All
   remaining arguments are names of input files; if  no  input  files  are
   specified, then the standard input is read.
1
28.01.2020, 00:00

Теги

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