'.env'$'\r' 파일을 삭제하세요.

'.env'$'\r' 파일을 삭제하세요.

이 파일을 만든 것이 무엇인지 전혀 모릅니다. 잘못된 쉘 스크립트가 있는 것 같습니다.

그것은 알려져있다'.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를 사용하는 경우 findinode를 통해 삭제할 수 있습니다.

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 키를 누릅니다.

관련 정보