터미널 명령의 물음표는 무엇을 의미합니까?


답변:


15

이를 와일드 카드 (글 로빙 패턴)라고합니다.

표준 와일드 카드 (글 로빙 패턴이라고도 함)는 여러 명령 줄 유틸리티에서 여러 파일을 처리하는 데 사용됩니다.
표준 와일드 카드는 거의 모든 명령 (mv, cp, rm 및 기타 여러 명령 포함)에서 사용됩니다.

  • (question mark)

    이것은 단일 문자를 나타낼 수 있습니다. "hd?"와 같은 명령 행에서 무언가를 지정한 경우 GNU / Linux는 hda, hdb, hdc 및 az, 0-9 사이의 다른 모든 문자 / 숫자를 찾습니다.

  • *(asterisk)

    이것은 임의의 수의 문자를 나타낼 수 있습니다 (0을 포함하여 0 개 이상의 문자 포함). "cd *"를 지정한 경우 "cda", "cdrom", "cdrecord"및 "cd"자체를 포함하여 "cd"로 시작하는 모든 항목을 사용합니다. "m * l"은 mill, mull, ml 및 m으로 시작하고 l로 끝나는 모든 것이 가능합니다.

  • [ ] (square brackets)

    범위를 지정합니다. 만약 당신이 m [a, o, u] m을했다면 : mam, mum, mom 만약 당신이했다면 : m [ad] m m으로 시작하고 끝나는 어떤 것이 될 수 있으며, a에서 d 사이의 어떤 문자도 가질 수 있습니다. 예를 들어 mam, mbm, mcm, mdm과 같이 작동합니다. 이러한 종류의 와일드 카드는 "또는"관계를 지정합니다 (일치하는 관계 만 필요).

  • { } (curly brackets)

    용어는 쉼표로 구분되며 각 용어는 이름 또는 와일드 카드 이름이어야합니다. 이 와일드 카드는 와일드 카드 또는 정확한 이름 (“또는”관계 중 하나 또는 다른 하나)과 일치하는 항목을 복사합니다.


예를 들어 다음과 같습니다.

  • cp { .doc, .pdf} ~

    이것은 .doc 또는 .pdf로 끝나는 모든 것을 사용자의 홈 디렉토리에 복사합니다. 쉼표 뒤에 (또는 다른 곳) 뒤에 공백을 사용할 수 없습니다.

  • [!]

    이 구문은 대괄호 안에있는 문자와 일치하지 않고 [와] 사이에 나열되지 않는 한 모든 문자와 일치합니다. 이것은 논리적 NOT입니다. 예를 들어, rm myfile [! 9]는 모든 myfiles * (예 : myfiles1, myfiles2 등)를 제거하지만 이름 내 9의 번호를 가진 파일은 제거하지 않습니다.

  • \ (backslash)

    "이스케이프"문자, 즉 후속 특수 문자를 보호하는 데 사용됩니다. 따라서 "\"는 백 슬래시를 검색하므로 따옴표와 백 슬래시를 사용해야 할 수도 있습니다.

더 많은 예를 보려면 : 이 페이지를 방문하십시오


3
파일 이름이 아닌 패키지 이름 이 apt-get remove필요 하다는 점 은 언급 할 가치가 있습니다. 쉘에 의한 와일드 카드 확장은 거의 쓸모가 없습니다. 다양한 패키지를 제거하려면 셸이 해당 패키지를 글로브 (예 :)로 해석하지 못하도록 적절히 인용 된 전체 정규식을 사용해야합니다 . apt-get remove 'gnome.*'

4
Standard wildcards are used by nearly any command (including mv, cp, rm and many others).=> 거짓. 이러한 와일드 카드는 쉘에 의해 확장되고 있으며 명령이받는 것은 패턴 대신 확장 (즉, 패턴과 일치하는 파일)의 결과입니다. (패턴과 일치하는 파일이없는 경우 해당 패턴은 명령에 직접 전달됩니다)
Carlos Campderrós

17

일반적으로 Bash에서 a ?는 임의의 문자로 확장되는 glob 패턴입니다.

예를 들면 다음과 같습니다.

$ echo Hello1 > foo1
$ echo Hello2 > foo2
$ cat foo?
Hello1
Hello2

그것은 가깝다 *하지만 *확장되어 0 개 이상의 문자, 한동안 ?로 확장 정확히 하나 (임의) 문자.

그러나 특별한 경우 ?에는 명령의 오타가 분명했습니다.


내 경우에는 쓸모없고 필요하지 않습니다.
Ooker

예. 실제로 질문을 할 때 연결 한 답변에서 편집되었습니다. :)
Malte Skoruppa

1
믿을 수 없다 : -o
Ooker

1
올바른 와일드 카드 인 경우에도 인용없이이 사용을 피해야합니다. apt-get RE를 이해하지만 호출 된 파일 gnome1이 현재 디렉토리에 존재하면 apt-get이 볼 기회가 있기 전에 쉘이 파일을 확장합니다.
Rmano

@Ooker 당신은 지금 그것을 잊지 못할 것입니다!
comrademike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.