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

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

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

scp foo :~

어떻게 삭제하나요?

답변1

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

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

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

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

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

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

-셸에서는 특별한 것이 아니지만 rm인수 시작 부분에서 발견되면 옵션으로 처리된다는 점에서 특별합니다. 여기서 는 뒤에 오는 인수가 로 시작하더라도 옵션으로 처리되지 않음을 --나타냅니다 .rm-

답변2

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

그래서, 그것은 것입니다

rm -i -- :?

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

그러나 이 경우 ?쉘에 의해 glob 문자로 확장됩니다. 따라서 위의 내용은 작동하지 않습니다.

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

관련 정보