음수 문자열로 디렉터리를 생성하는 외부 프로그램이 있습니다. cd
이 디렉토리를 포함하여 다음과 같은 기본 쉘 명령을 사용하려고 합니다 ls
.
cd -78059735
당연히 이는 -7로 시작하는 명령줄 옵션처럼 보이기 때문에 실패합니다.
-bash: cd: -7: 잘못된 옵션
마찬가지로 다음 변형도 실패합니다.
cd "-78059735"
cd "\-78059735"
cd '-78059735'
cd '\-78059735'
cd \-78059735
쉘을 통해 이 번거로운 디렉토리와 어떻게 상호 작용할 수 있습니까?
답변1
이는 명령이 cd
다음 문자를 -
작동하기 위한 유효한 옵션 플래그로 처리하기 때문입니다. 7
유효하지 않기 때문에 cd
표시되는 오류와 함께 실패합니다.
이 경우 --
아래와 같이 명령 이름 앞에 이중 대시를 추가하여 명령줄 옵션의 끝을 지정할 수 있습니다. 다음 명령은 명령줄 옵션이 cd
완전하고아니요이후에 다른 플래그가 예상됨--
cd -- -78059735/
이전에 다른 플래그를 제공할 수도 --
있으며 제대로 작동할 것입니다. 아래 명령에는 디렉토리가 이전에 존재하지 않은 경우 디렉토리를 생성하는 mkdir
옵션이 필요하며 , 뒤에 명령줄 옵션 플래그의 끝을 제공하는 경우 가 있는 문자열에서 잘 작동합니다.-p
-
-p
mkdir -p -- /tmp/-78059735
ls -d /tmp/*
/tmp/-78059735
rm
디렉토리를 삭제하는 명령도 아래와 같이 잘 작동합니다.
rm -vrf -- /tmp/-78059735
removed directory '/tmp/-78059735'
답변2
cd ./-78059735
ls ./-78059735
이것은 나에게 효과적입니다.