Nice programing

이중 하이픈으로 시작하는 파일을 제거하는 방법은 무엇입니까?

nicepro 2020. 11. 12. 20:15
반응형

이중 하이픈으로 시작하는 파일을 제거하는 방법은 무엇입니까?


내 Unix 컴퓨터에 다음으로 시작하는 파일이 있습니다.

 --

예 : --testings.html

제거하려고하면 다음 오류가 발생합니다.

cb0$ rm --testings.html
rm: illegal option -- -
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

나는 시도했다

rm "--testings.html" || rm '--testings.html' 

그러나 아무것도 작동하지 않습니다.

터미널에서 이러한 파일을 제거하려면 어떻게해야합니까?


rm -- --testings.html

--옵션은 rm에게 모든 추가 인수를 옵션이 아닌 파일 이름으로 처리하도록 지시 -합니다.

이것은 rm 명령에만 국한되지 않습니다. getopt 함수가이를 구현하고 많은 (모두?) UNIX 스타일 명령이 동일한 방식으로 --처리합니다. 옵션 처리를 종료하고 그 이후의 모든 것은 일반 인수입니다.

http://www.gnu.org/software/hello/manual/libc/Using-Getopt.html#Using-Getopt


rm -- --somefile

작동하는 동안 rm옵션을 구문 분석하기 위해 getopts를 사용 하는 솔루션입니다 . 자체적으로 구문 분석을 수행하고 이에 대해 토하는 응용 프로그램이 있습니다 ( " --옵션의 끝"논리를 반드시 구현할 필요는 없기 때문입니다 ).

그렇기 때문에 두개골을 통해 운전해야 할 해결책은 다음과 같습니다.

rm ./--somefile

이렇게하면 인수가 -.

게다가 정말 괜찮은 쉘 스크립트를 만들려고한다면; ./펑키 한 파일 이름 입력으로 인해 스크립트가 손상되는 것을 방지하기 위해 기술적으로 모든 파일 이름 매개 변수 확장 앞에 넣어야합니다 (또는해서는 안되는 작업을 수행하기 위해 스크립트가 남용 / 악용되는 것을 방지합니다. 예를 들어, rm파일을 삭제합니다). 그러나 디렉토리는 건너 뛰고 rm -rf *모든 것을 삭제합니다. " -rf" 의 파일 이름을 스크립트에 전달하거나 누군가 touch ~victim/-rf가 이런 식으로 동작을 변경하는 데 사용될 수 있습니다.


어느 rm -- --testings.htmlrm ./--testings.html.


rm -- --testings.html

또 다른 방법은 find ... -name "-*"-delete를 사용하는 것입니다.

touch -- --file 
find -x . -mindepth 1 -maxdepth 1 -name "--*" -delete 

파일 이름에 불가능한 문자가 포함 된 파일을 삭제하는보다 일반적인 접근 방식은 파일의 inode를 사용하는 것입니다.

를 통해 얻을 수 있습니다 ls -i.

예 :

$ ls -lai | grep -i test
452998712 -rw-r--r--  1 dim   dim      6 2009-05-22 21:50 --testings.html

그리고 찾기의 도움으로 그것을 지우려면 :

$ find ./ -inum 452998712 -exec rm \{\} \;

이 프로세스는 쉽게 스크립팅 할 수 있기 때문에 파일 이름 특성이 많은 파일을 다룰 때 유용 할 수 있습니다.


rm ./--testings.html

또는

rm -- --testings.html

참고 URL : https://stackoverflow.com/questions/706196/how-to-remove-files-starting-with-double-hyphen

반응형