이상한 "에코" 동작

이상한 "에코" 동작

일을 하다가 이런 걸 발견했어요

$ echo [Login]
  g
$ echo [kilo]
  k
$ echo [gauke]
  e g k
$ echo [quasi-star]
  k m q

이 출력을 발생시키기 위해 뒤에서 무슨 일이 일어나고 있습니까? 출력은 echo [quasi-star]정신을 잃고 전혀 존재하지 않는 문자를 제공합니다.

노트:네, 결과물을 얻을 수 있다는 걸 알아요echo "[Login]"

답변1

따옴표가 없으면 쉘은 문자 클래스의 경로 이름(glob) 확장을 수행하므로 []현재 디렉토리에 e, g, k, , 이름의 m파일이 있을 수 있습니다 q. 이것이 결과입니다.

echo기본적으로 경로명 확장의 결과만 인쇄하면 됩니다.


예를 들어보겠습니다 echo [quasi-star]:

for의 확장된 결과 [quasi-star]는 from의 단일 문자입니다 quasijklmnopqrstar(의도적으로 유지된 중복). 셸의 관점에서 보면 주변 문자가 없기 때문에 확장의 현재 디렉터리에 있는 단일 문자 파일 이름만 일치합니다.

관련 정보