에코 없이 패턴 일치

에코 없이 패턴 일치

출력이 다른 이유는 무엇입니까?

touch a aa bb ccc

echo *

a aa bb ccc // 이해합니다. *는 0개 이상 일치함을 의미합니다.

*

aa bb ccc // 혼란스럽습니다.

echo ?

괜찮아

?

a aa bb ccc // 또 헷갈립니다.

*?

aa bb ccc // 매우 혼란스럽다

* *

a aa aa bb bb ccc ccc // 매우 매우 혼란스럽습니다.

echo를 사용하는 것과 사용하지 않는 것의 차이점이 무엇인지 알고 싶습니다.

답변1

작성하는 모든 줄에는 일반적으로 첫 번째 단어인 명령이 있어야 합니다.

무언가를 인쇄하려면 일반적인 명령은 입니다 echo.

pwd(현재 작업 디렉터리) 에 a, 및 가 aa있는 경우 이 명령은 디렉터리의 모든 파일을 인쇄합니다.bbccc

 $ echo *
 a aa bb ccc

이 명령은 pwd에 문자가 포함된 모든 파일을 인쇄합니다.

$ echo ?
a

그러나 명령을 제공하지 않으면 첫 번째 "단어"(대부분의 경우 첫 번째 공백까지)가 명령으로 처리됩니다.

별표만 제공하는 경우 *별표 확장 뒤의 첫 번째 단어가 실행할 명령으로 사용됩니다.

명령이 a없으면 오류가 인쇄됩니다.

$ *
bash: a: command not found

명령이 호출되면 a세 개의 매개변수와 함께 호출됩니다 aa bb ccc.

자세한 내용을 제공하지 않았으므로 해당 이름으로 어떤 명령이 실행되고 있는지 추측할 수 있습니다 a(기본 명령이 아님). 또한 귀하가 어떤 케이스를 사용하고 있는지 알 수 없습니다.

그러나 모든 예제에서는 첫 번째 예제가 a누락되었음을 보여줍니다.

$ *
aa bb ccc              ### missing first `a`.
$ *?
aa bb ccc              ### missing first `a`.
$ * *
a aa aa bb bb ccc ccc  ### missing first `a`.

와는 별개로:

$ ?
a aa bb ccc

명령이 무엇인지 모르기 때문에 결론을 내리기가 어렵습니다 a.

관련 정보