파일 이름 ":?"을 제거하는 방법

파일 이름 ":?"을 제거하는 방법

:~실수로 bash 쉘에 파일 이름을 만들었습니다.

scp foo :~

어떻게 삭제하나요?

답변1

시도 rm ':?'하거나 rm ":?"또는rm :\?

주로 작은따옴표나 큰따옴표로 파일 이름을 인용해야 합니다. 또는 파일 이름에 포함된 특수 문자를 이스케이프하세요.

셀 수 있는 특수 문자는 다음과 같습니다.

*
|
$
&
#
<>
;
space/tab/newline
\
brackets/parenthesis/braces
'"`
?
etc

이름이 잘못된 파일이 삭제되는 것을 방지하려면 또는 를 my_file사용하는 대신 작은따옴표를 사용하는 것이 좋습니다 . 작은 따옴표 문자는 Bourne과 같은 쉘에서 작은 따옴표로 묶을 수 없는 유일한 문자이지만 다음과 같이 항상 and 자체를 사용하여 파일 이름의 나머지 부분을 인용할 수 있습니다.$filerm $filerm "$file"file='my_file''...''\'

rm -- '-$#~<>'\''"*?[]{}'`

이것은 -쉘에 특별한 것은 아니지만 rm인수의 시작 부분에서 발견되면 옵션으로 처리된다는 점에서 특별합니다. 이는 나중에 인수가 로 시작하더라도 옵션으로 간주되지 않도록 --지시합니다 .rm-

답변2

일반적으로 이상한 이름의 파일을 삭제하고 싶을 때마다 --옵션의 끝을 나타내는 태그를 사용해 볼 수 있습니다. 이 플래그 이후의 모든 항목은 위치 인수로 처리됩니다. (또한보십시오:"--"(이중 대시)은(는) 무슨 뜻인가요?)

그래서 그건

rm -i -- :?

(@Doug O'Neal이 제안한 대로 이 -i옵션은 삭제하기 전에 올바른 파일을 삭제하고 있는지 확인하라는 메시지를 표시합니다.)

그러나 이 경우 ?쉘은 이를 전역 문자로 확장합니다. 따라서 위의 방법은 작동하지 않습니다.

이 경우 쉘의 자동 완성 기능을 사용할 수 있습니다. 이상한 이름의 파일이 있는 디렉토리로 이동하여 rm :(을 누르지 않고 Enter)를 입력한 다음 키를 눌러 Tab현재 디렉토리의 모든 파일을 순환합니다. 이상한 이름을 가진 파일은 올바르게 참조됩니다.

관련 정보