슬래시는 무엇을 합니까? [복사]

슬래시는 무엇을 합니까? [복사]

내가 이해하는 한도에서는:

  • ./filenamefilename스크립트로 실행됩니다.
  • ./현재 디렉터리를 나타냅니다.

./가 a 앞에 오면 그 효과는 무엇입니까(있는 경우)글로벌 예선(필터):

qpdf --empty --pages ./*.pdf(nOn) -- output.pdf

이 질문은 없이 실행해도 ./동일한 결과가 나오는 것 같아서 묻는 것입니다.

답변1

접두사 ./(또는 경로)는 대시로 시작하는 파일 이름이 옵션으로 간주되지 않도록 합니다.

$ touch ./-l foo bar
$ ls
bar  foo  -l
$ ls *
-rw-r--r-- 1 ilkkachu ilkkachu 0 Nov  3 15:10 bar
-rw-r--r-- 1 ilkkachu ilkkachu 0 Nov  3 15:10 foo

근본적인 문제는 그것이다.껍데기와일드카드를 확장하고, 예를 들어 ls매개변수를 볼 때 -l그것이 파일 이름 와일드카드에서 나온 것인지, 아니면 사용자가 직접 작성한 것인지 알 수 있는 방법이 없습니다.

위에서 호출된 파일은 긴 목록으로 전환 -l됩니다 . ls이러한 파일 이름을 사용하면 invalid option오류가 발생할 수 있습니다. 또는 명령이 이고 rm파일 이름이 -rf.

이것은 파일 이름에 대한 유닉스 시스템의 느슨한 태도를 틀림없이 "잘못"으로 만드는 요인 중 하나일 뿐입니다. 더 자세히 알아보려면 David Wheeler가 작성한 다음 기사를 확인하세요.

답변2

도트-슬래시 구조는 " filename스크립트로 실행"되지 않습니다. 이는 "현재 디렉터리에서 찾기"라는 쉘(또는 입력을 해석하는 다른 프로그램)에 대한 명령입니다. 명령이 현재 작업 디렉터리에 있고 현재 작업 디렉터리가 검색 경로에 없는 경우 일반적으로 명령(바이너리 또는 스크립트) 앞에 추가됩니다. qpdf예에서와 같이 명령에서 이것을 사용하는 것은 명령을 호출한 디렉터리에 출력 파일을 배치하려는 경우 다른 디렉터리에서 소스 파일을 가져오는 방법입니다.

관련 정보