대시 파일을 읽는 방법


15

터미널에서 구분하지 않고 대시 파일을 읽는 방법 ./

예는 읽기 위해서는 - file우리가 읽을 수

cat ./-file_name

Q : 같은 것을 달성 할 수있는 다른 방법이 있습니까?


4
권장되는 방법은 실제로 ./접두사 를 사용하는 것 입니다. 휴대 성이 가장 뛰어납니다 (유즈넷 시대의 유닉스 FAQ 참조)
Olivier Dulac

find . -name "-filename" | xargs cat파이프를 통해 ./-filename을 보냅니다. 귀하의 (단순화 된) 경우에는 실수이지만 큰 디렉토리 / 스크립트에서 도움이 될 수 있습니다.
Walter A

답변:


11

stdin에서 입력을받는 명령의 경우 리디렉션을 사용할 수 있습니다.

cat <-file_name

나중에이 하나가 작동합니다 :) 그래서 ./ 다른 방법을 사용하여 하나를 읽는 세 가지 방법을 얻었습니다.
vidhan

22

--옵션의 끝을 표시 하려면 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

3
모든 프로그램을 구현할 수는 없습니다 --.
glenn jackman 2016 년

2
정말? 나는 모든 프로그램이 구현 한다고 말하지는 않았지만 그 --중 일부는 보여 주었다.
Arkadiusz Drabczyk

1
@vidhan : 다른 옵션은 없습니다.
Arkadiusz Drabczyk

1
@vidhan 당신은 또한 아무 이유없이 당신의 인생을 복잡하게 할 수 있고 같은 일을 할 수는 find . -name '-file_name' -exec cat {} \;있지만 실제로 그다지 지적하지는 않습니다.
terdon

2
파일 이름이 지정되어 -있고 다른 것이 없으면 작동하지 않습니까? 이것은 전쟁 게임에서 나타 났습니다
ThisClark

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.