"-"(예: "-78059735")가 포함된 디렉토리에서 쉘 명령을 사용하는 방법은 무엇입니까? [복사]

"-"(예: "-78059735")가 포함된 디렉토리에서 쉘 명령을 사용하는 방법은 무엇입니까? [복사]

음수 문자열로 디렉터리를 생성하는 외부 프로그램이 있습니다. 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

이것은 나에게 효과적입니다.

관련 정보