답변:
--옵션의 끝을 표시 하려면 double 을 사용하십시오 .
cat -- -<FILENAME>
같은 다른 프로그램 touch, rm또는 git checkout이 규칙을 따릅니다 :
$ touch -- -file
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Mar 10 13:13 -file
$ echo hi! >> -file
$ cat -- -file
hi!
$ rm -- -file
$ echo $?
0
경고 : 스크립트 --후에 rm는 항상 사용하는 것이 좋습니다 . 침입자는 --rf파일을 디렉토리에 넣고 rm *실행 매개 변수로 취할 수 있습니다. 이것 좀 봐:
$ touch A
$ touch B
$ mkdir dir
$ touch dir/C
$ touch -- -rf
$ rm *
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Mar 10 13:21 -rf
죄송합니다. 디렉토리를 삭제하고 싶지 않았습니다. 우리는 다음을 사용해야했습니다 --.
$ touch A
$ touch B
$ mkdir dir
$ touch dir/C
$ touch -- -rf
$ rm -- *
rm: cannot remove `dir': Is a directory
$ ll
total 4.0K
drwxr-xr-x 2 ja ja 4.0K Mar 10 13:22 dir
--.
--중 일부는 보여 주었다.
find . -name '-file_name' -exec cat {} \;있지만 실제로 그다지 지적하지는 않습니다.
./접두사 를 사용하는 것 입니다. 휴대 성이 가장 뛰어납니다 (유즈넷 시대의 유닉스 FAQ 참조)