에코 없이 패턴 일치

에코 없이 패턴 일치

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

touch a aa bb ccc

echo *

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

*

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

echo ?

확인

?

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.

관련 정보