명령 줄 용어 : 명령의 이러한 부분은 무엇입니까?


21

커맨드 라인에서 나는 종종 같은 "간단한"명령을 사용

mv foo/bar baz/bar

그러나 나는 이것의 모든 부분을 어떻게 부를지 모른다.

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

나는 (나는 생각한다) 1 은 명령이고 2 는 인수 라는 것을 알고 , 아마도 3 을 인수 목록 이라고 부를 것이다 (정확한가?).

그러나 4을 무엇을 해야할지 모르겠습니다 .

더 복잡한 "명령"은 어떻게 표시됩니까?

find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2' {} {/}

나는 1,2,3,4라고 부르는 것과 위의이 "명령"의 각 부분을 부르는 것을 세분화하는 대답에 감사드립니다.

내가 여기에 포함시키지 않은 독특하고 놀라운 다른 것들에 대해서도 배우는 것이 좋을 것입니다.


1
및 특히 시놉시스 섹션 의 man페이지를 살펴 보셨습니까 ? gitfind
fpmurphy

4
당신은 자식에 대한 매뉴얼 페이지에서 봤어 찾아 질문과는 아무런 보인다 그래서 gitfind리눅스 오히려 일반적인 용어.
Att Righ

에서 bash는 man 페이지에 따르면 A | B, A | BA는 파이프 라인 , AB있는 명령은 (는이 명령에 바로 최초의 세계와 같은 이름을 가진 것은 불행한 일이다). 첫 번째 인수를 실행 파일 이라고 할 수 있지만 나와 동의하는 소스를 찾을 수 없습니다.
Att Righ

4
의 맥락에서 git checkout ..., checkoutA는 하위 명령 , 그리고 맥락에서 sh -c ..., -c입니다 옵션 .
wjandrea

@JoL 고맙습니다. 당신은 맞아, 나는 그것을 편집했습니다. 내가 제대로 해보려고했던 부분을 4 번 정도 다시 썼기 때문입니다.
onlygusti

답변:


33

각 부분의 공통 이름은 다음과 같습니다.

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘
  1. 명령 이름 (리디렉션 또는 변수 지정이 아닌 별칭이 확장 된 후 명령 줄의 첫 단어 또는 토큰).

  2. 명령에 대한 토큰, 단어 또는 인수. 남자 배쉬에서 :

    단어 : 쉘에서 단일 단위로 간주되는 일련의 문자. 토큰이라고도합니다.

  3. 일반적으로 : 인수

  4. 명령 줄.

a와 함께 두 개의 간단한 명령을 연결 하는 |것은 파이프 시퀀스 또는 파이프 라인입니다.

┌─1┐ ┌──────2──────┐ ┌─2─┐ ┌──2──┐   ┌──1───┐ ┌2┐┌2┐┌2┐┌────2─────┐ ┌2┐ ┌2┐
find transcripts/?.? -name '*.txt' | parallel -- sh -c 'echo $1 $2'  {} {/}
│    └────────────3──────────────┘            └────────────3──────────────┘
└───────────────────────────────────4─────────────────────────────────────┘

리디렉션 및 변수 할당도 있습니다.

┌──5──┐ ┌1┐ ┌─2─┐ ┌─2─┐   ┌───6──┐ ┌1┐ ┌─5─┐
<infile tee file1 file2 | LC_ALL=C cat >file
└─────────7───────────┘   └───────7────────┘
└─────────────────────4────────────────────┘

위의 숫자 외에 :

  1. 리디렉션.
  2. 변수 할당.
  3. 간단한 명령.

이것은 명령 행이 가질 수있는 모든 요소의 목록이 아닙니다. 이러한 목록은이 짧은 대답에 비해 너무 복잡합니다.


2
POSIX 용어에서 파이프 라고하는 것은 파이프 시퀀스 또는 파이프 라인입니다 (파이프 라인은 선택적 !으로 상태를 무효화 할 수 있음 ). 파이프 는 파이프 라인을 구현하기 위해 대부분의 쉘에서 사용하는 IPC 메커니즘을 참조합니다 (파이프 라인은 파이프를 사용할 필요가 없으며 ksh93은 일부 시스템에서 소켓 페어를 대신 사용합니다). 쉘에 같은 더 많은 키워드가 time, noglob대신 또는 추가로 사용 할 수 있습니다 !여기에있다.
Stéphane Chazelas

1
IMHO, 이런 것들을 인수라고 부릅니다. 그래서이 문맥에서 토큰이라는 단어는 "bash의 문법의 원자 단위"를 의미한다고 생각합니다. 여기서 토큰이라는 용어 는 프로그램이 실행되는 컨텍스트가 아니라 쉘 명령 행 의 컨텍스트에만 존재합니다 . "이것들은 프로그램 토큰들"이라고 말하는 것이 조금 이상하지만, "명령 줄의 두번째 토큰은 $ test"라고 말하는 것은 조금 이상합니다. 차이점은에서 나타납니다 cat $file. 여기서 $file토큰 이라고 말하지만 파일 의 가치 는 인수입니다.
Att Righ

1
@PeterCordes 맞습니다. <<< "…"는 인수가 아닌 리디렉션입니다. 여전히 라인의 토큰이지만. 혼란을 드려 죄송합니다.
Isaac

1
@TOOGAM 표준 정의와 정확히 반대입니다. 발신자가 제공하는 것은 인수입니다. cf. "형식 매개 변수"또는 이 SO 질문 .
마이클 호머

1
@TOOGAM "내가 볼 어떤 매개 변수입니다" . 흠 나는 당신이 옳다고 생각합니다. POSIX 사양에 따르면 : "쉘은 함수 (함수 정의 명령 참조), 내장 (특수 내장 유틸리티 참조), 실행 파일 또는 스크립트를 실행하여 인수의 이름을 1에서 n까지의 위치 매개 변수로 제공합니다. 위치 매개 변수 번호가 0 인 명령 이름 (또는 스크립트 내의 함수의 경우 스크립트 이름) (명령 검색 및 실행 참조). " 그리고 나는이 년 내내 틀렸다 ... 비록 내 방어에서 그것은 불렀다argv
Att Righ

15

위의 @isaac 답변이 좋습니다.

일부 소스로 이것을 확장하고 싶습니다.

나는 추측 는 POSIX 표준 어떤 의미에서 힘이 고려 될 정규 . 다른 출처는 man bash및 일 수 있습니다 man proc.

┌1┐ ┌──2───┐
git checkout master
│   └──────3──────┘
└───────4─────────┘

POSIX는 다음을 제안합니다.

  1. 는 IS 명령 이름이 (오히려 명령에 비해, 심지어는이 문서의 사용 장소에 명령하지만)
  2. 논의
  3. 인수
  4. 명령 ( 명령 행을man proc 사용 하지만 )

또한 더 복잡한 명령에 대한 용어도 있습니다.

나는 명령이 매우 모호하다고 생각하므로 아마도 명령 이름명령 줄 이라는 용어 는 명확성을 위해 좋습니다 .j


proc은 무엇입니까? 나는 그것을 들어 본 적이 없다.
theonlygusti


5
+1이 답변이 가장 좋습니다. (이 특정 상황에서 2부속 명령 이지만 일반적으로 인수입니다.)
kubanczyk

@theonlygusti proc는 커널의 내부 상태에 대한 정보를 제공하는 특수 목적의 파일 시스템 (파일 모음)입니다. 프로세스를 의미한다고 생각합니다 ( 프로세스 이외의 정보를 제공하는 sysfs 참조 ). 관련이있는 이유는 커널 개발자 가 작성 했기 때문에 좀 더 공식적인 언어를 반영 할 수 있습니다.
Att Righ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.