*
예를 들어 명령에서 설명하는 방법을 알고 있습니다 ls
. 그러나 명령으로 실행하려고 하면 *
셸은 작업 디렉터리의 첫 번째 파일이나 디렉터리를 실행하려고 시도합니다. 왜 이런거야? 쉘은 그것을 어떻게 이해합니까 *
?
답변1
다른 운영 체제와 달리 Unix에서는 파일 이름 와일드카드가 셸에 의해 확장됩니다. 먼저 매개변수 확장과 와일드카드를 확장한 다음 (현재) 첫 번째 단어를 실행할 명령 이름으로 사용합니다.
이것이 대시로 시작하는 파일이 문제가 될 수 있는 이유이기도 합니다. 이와 같은 와일드카드는 *
파일 이름으로 확장되며 대시로 시작하는 이름은 옵션으로 간주될 수 있습니다. (끔찍한 예, -r
작업 디렉토리의 파일을 호출하면 rm *
모든 것이 재귀적으로 삭제됩니다...)
그러나 일반적으로 사람들은 이를 명령줄의 첫 번째 항목으로 사용하지 않으므로 *
첫 번째 파일이 이 경우 실행할 명령을 결정하도록 해도 문제가 발생할 가능성이 없습니다.