실수로 :x!~로 vim을 종료했는데 이제 ~가 다른 경로에 표시됩니다.

실수로 :x!~로 vim을 종료했는데 이제 ~가 다른 경로에 표시됩니다.

루트로 파일을 종료할 때 다음을 입력 :x!~하고 Enter를 눌렀습니다. 이제 다음이 있습니다.

root@host:/etc/shinken/services$ ll
total 64K
-rw-r--r--  1     0     0  515 Sep  1 18:24 ~
drwxr-xr-x  2 10003 10003 4.0K Sep  1 18:24 .
drwxr-xr-x 29 10003 10003 4.0K Aug  8 17:11 ..
<other files omitted> 

그렇다면 cd ~내가 /root원하는 결과를 얻을 수 있을 것이다. ~실수로 내 것을 삭제하지 않고 새 항목을 삭제하는 방법실제집?

답변1

cd /etc/shinken/services
rm ./~

이것에 대해서는 별로 할 말이 없습니다. ./이전에 지정 하면 ~쉘이 물결표 확장을 수행하고 이를 현재 디렉토리의 파일 이름으로 처리하는 것을 방지할 수 있습니다.

또 다른 옵션은

cd /etc/shinken/services
rm '~'

그렇지 않으면

rm /etc/shinken/services/~

Vi와 Vim에서는 종료하기 전에 파일에 쓰는 것처럼 작동 :x합니다 . :wq파일 이름( ~이 경우)을 추가하면 해당 이름의 파일이 작성됩니다. 이 두 명령의 차이점은 :x마지막 저장 이후 현재 버퍼가 수정된 경우에만 파일이 기록된다는 것입니다. 덮어쓰기는 !읽기 전용 파일에 씁니다.

답변2

rm -- '~'

주변의 작은따옴표는 ~bash가 경로를 확장하고 단순히 rm.

--rm이 추가 인수를 플래그로 해석하고 해당 인수가 모두 파일이라고 가정하는 것을 방지합니다(이 경우에는 그다지 중요하지 않지만 앞쪽 가장자리가 있는 파일이 있는 경우 유용합니다 -).

ls먼저 테스트 해 볼 수 있습니다 .

ls -- '~'

예를 들어, 리터럴 "~"를 포함하지 않는 디렉토리에서는 다음을 얻게 됩니다.

ls: cannot access '~': No such file or directory

ls경로가 수정되지 않은 상태 로 수신되었음을 표시합니다 .

관련 정보