명령 구문을 표시하는 데 사용되는 기호의 일반적인 의미는 무엇입니까?

명령 구문을 표시하는 데 사용되는 기호의 일반적인 의미는 무엇입니까?

Microsoft 문서와 유사한 GNU/Linux의 명령줄 도구에 대한 일종의 "구문 키"를 찾고 있습니다.

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/command-line-syntax-key.

예를 들어, Microsoft 명령줄 구문 설명서에서는 대괄호 안의 텍스트를 사용하여 선택적 항목을 나타냅니다. 대괄호 안의 내용은 필수 입력사항으로 반드시 선택하셔야 합니다. 등.

명령줄 구문을 나타내기 위해 GNU/Linux에서 사용되는 기호는 무엇입니까? 각 기호는 무엇을 의미하나요?

답변1

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.

터미널에 "굵게"와 "기울임꼴"이 실제로 어떻게 나타나는지는 다른 질문이라고 덧붙이고 싶습니다. 내 터미널에서 굵은 글씨는 있는 그대로의 텍스트를 의미하고 밑줄 친 텍스트는 대체 가능한 인수를 의미하며 일부 터미널에서는 그러한 형식이 전혀 적용되지 않을 수도 있습니다.

톤은 다음과 같습니다

  • 선택 항목은 대괄호 안에 표시됩니다.
  • 개별적으로 선택된 수직선
  • 줄임표는 항목이나 요소가 반복될 수 있음을 나타냅니다.

전반적으로 이러한 규칙은 실제로 인용한 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].

개요에 여러 줄이 있는 이유는 이 특정 명령을 사용하는 여러 가지 가능한(상호 배타적) 방법이 있기 때문입니다.

대괄호 안의 모든 내용은 선택 사항이며, 꺾쇠 괄호 안의 모든 내용은 자리 표시자입니다.

(참고: 커밋과 blob은 Git에 저장할 수 있는 개체 유형입니다. blob은 파일의 내용을 나타내고 커밋은 Git에서 추적하는 전체 파일 세트의 상태를 나타냅니다. 귀하의 질문과 관련이 없지만 언급하겠습니다. 용어상의 혼란을 방지하기 위한 것입니다.)

또 다른 예인 command 의 개요는 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.

답변2

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.

   Exact rendering may vary depending on the output device.  For instance,
   man will usually not be able to render italics when running in a termi‐
   nal, and will typically use underlined or coloured text instead.

   The command or function illustration is a pattern that should match all
   possible invocations.  In some cases it is advisable to illustrate sev‐
   eral exclusive invocations as is shown in the SYNOPSIS section of  this
   manual page.

답변3

정확히 당신이 원하는 것이 무엇인지 잘 모르겠습니다. 당신이 옳았다는 것을 증명하기 위해 세 가지 예를 들어보겠습니다.

 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.pdfGNU에서 약간의 변경 사항이 있습니다:

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

그리고POSIX 사양:

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

쉘만으로는 너무 많은 특수 문자를 사용하므로 일관된 메타 구문이 실용적이지 않습니다. 그러나 그들은 모두 동일한 일반적인 용의자를 사용합니다.

"Shell"은 "명령줄"이 아니고 GNU/Linux는 MS가 아니므로 차이점이 더해집니다. 먼저 몇 가지 기본 정보가 필요할 수 있습니다.사용일반적인 Linux 쉘 및 Unix - 물론 귀하의 상황에 대한 정보가 온라인에 있습니다. GNU/Linux는 Windows와의 기본 사항이나 차이점을 설명할 책임이 없습니다.

find명령/유틸리티를 사용하는 또 다른 예

man findGNU/Linux 쉘에서 bash는 다음을 제공합니다:

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

Men's Pager 에 들어가면 /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과 기본값 -aAND충분하므로 GNU/Linux에서 사용할 수 있습니다.

관련 정보