이 파일을 만든 것이 무엇인지 전혀 모릅니다. 잘못된 쉘 스크립트가 있는 것 같습니다.
그것은 알려져있다'.env'$'\r'
나는 이것의 다양한 버전을 시도했을 뿐만 아니라 디렉토리 열기, 파일 선택 및 Shift-D를 사용하여 rm
. 작동하지 않습니다. 실패합니다.vim ./
**warning** (netrw) delete(/root/squawker/.env) failed!
NetrwMessage [RO]
"NetrwMessage" --No lines in buffer--
이 불쾌한 파일을 어떻게 삭제할 수 있나요?
이것은 우분투 20.04에 있습니다
답변1
최신 Linux 시스템(대부분의 데스크탑 배포판과 같이 GNU 도구를 사용함)에서 ls
셸의 인용 구문을 사용하면 이름에 이상한 문자가 인쇄됩니다. 그렇다면 파일 이름은 '.env'$'\r'
캐리지 리턴 문자가 있는 곳 입니다. Windows 줄 끝이 있는 쉘 스크립트가 있는 경우 예를 들어 실행하십시오 .ls
.env<CR>
<CR>
whatever > .env
여기서의 장점은 ls
출력을 쉘에 대한 입력으로 직접 사용할 수 있다는 것입니다. 글쎄, 적어도 Bash, ksh 및 zsh의 경우 Debian/Ubuntu의 Dash와 같은 표준 POSIX sh가 아닙니다 /bin/sh
.
그러니 그냥 사용해 보세요
rm -f '.env'$'\r'
물론 이름이 지정된 항목 과 문자 하나를 rm -f .env?
제거하려는 노력도 이루어져야 합니다 ..env
물론 파일 이름은 작은따옴표와 백슬래시를 사용하여 문자 그대로일 수도 있습니다. 그러나 이것은 우연히 달성하기가 더 어렵습니다. 그렇더라도 이름에 포함된 내용을 모두 rm -f *.env*
제거하려는 노력이 필요합니다 ..env
답변2
GNU를 사용하는 경우 find
inode를 통해 삭제할 수 있습니다.
ls -lid -- .env*
첫 번째 열의 숫자는 입니다 inode
. 파일 이름에 해당 문자열이 포함된 다른 파일이 있는 경우 env
실제로 원하는 파일이 무엇인지 주의하세요.
find . -inum <inode> -exec rm -f {} \;
<inode>
실제 inode 번호로 바꾸십시오 . 해당 섹션을 제거하면 -exec
삭제하기 전에 원하는 파일이 반환되는지 알 수 있습니다.
다음을 사용할 수도 있습니다.
find . -inum <inode> -delete
가끔 -exec
습관적으로 이 비트를 사용하지만 어느 쪽이든 작동합니다.
답변3
이름의 까다로운 부분에 와일드카드를 사용하도록 쉘에 요청하고, rm
입력할 필요가 없도록 기억해 달라고 요청하세요.
$ touch '.env'$'\r'
$ ls -l .env*
-rw-rw-r-- 1 paul paul 0 May 20 16:51 '.env'$'\r'
$ rm -i .env*
rm: remove regular empty file '.env'$'\r'? y
답변4
불쾌한 파일 이름을 선택하는 빠르고 더러운 방법은 셸의 자동 완성 기능을 사용하는 것입니다.
를 입력 rm
한 다음 삭제하려는 파일이 화면에 인쇄될 때까지 Tab 키를 누릅니다.