줄로 구분하지 않고 터미널에서 대시 파일을 읽는 방법./
예를 들어 a를 읽으려면 - file
다음과 같이 읽을 수 있습니다.
cat ./-file_name
묻다:동일한 목표를 달성할 수 있는 다른 방법이 있습니까?
답변1
--
옵션의 끝을 표시하려면 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
경고하다:스크립트에서는 항상 after를 사용하는 것이 --
좋습니다 . 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
답변2
stdin에서 입력을 받는 명령의 경우 리디렉션을 사용할 수 있습니다.
cat <-file_name
답변3
대안이 이상해집니다.
dd if=-x 2>/dev/null