출력이 다른 이유는 무엇입니까?
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
있는 경우 이 명령은 디렉터리의 모든 파일을 인쇄합니다.bb
ccc
$ 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
.