기호 touch
로 시작하는 이름을 가진 파일을 생성하기 위해 Linux 터미널에서 명령을 사용하고 싶습니다 .-
-attempt
-
특수문자 라는 사실을 어떻게 극복할 수 있나요 ?
예를 들어, 이름이 이라는 파일을 만들고 싶다면 #attempt
그냥 쓸 수는 없습니다.touch #attempt
대신에 를 써야 하는데 touch \#attempt
이 -
경우에는 사용해도 \
여전히 잘 작동하지 않습니다.)
답변1
두 가지 방법:
-
첫 번째 문자에서 멀리 이동
touch ./-foo
또는 --
스위치 끝 마커를 사용하세요.
touch -- -foo
답변2
touch \#attempt
해시 기호는 쉘에 특별하기 때문에 작동합니다. 마찬가지로 괄호나 앰퍼샌드 등이 있는 파일 이름에는 touch \(foo\)
, 같은 것이 필요합니다.touch 'this & that'
하지만 대시를 탈출하는 것은 특별하지 않기 때문에 도움이 되지 않습니다.껍질에, 그러나 셸에서 실행되는 유틸리티입니다. 쉘 명령줄을 실행하는 것은 touch \-foo
running 과 동일하며 touch -foo
어쨌든 단일 touch
인수를 얻습니다 .-foo
따라서 탈출하는 대신 다른 것이 필요합니다.
명령 인수를 (가능한) 옵션으로 해석하는 것을 중지하도록 프로그램에 지시하는 표준 방법은 --
옵션 뒤에 인수를 삽입하는 것입니다. 예를 들어 이것은 다음 과 같은 파일에서 rm
옵션을 사용하여 실행됩니다 .-f
-r
rm -f -- -r
(그리고 rm -- --
이라는 파일을 제거합니다 --
.)
또는 일반적으로 대시를 앞에 추가하여 파일 이름의 첫 번째 문자가 아닌지 확인하여 문제를 해결할 수 있습니다 ./
. 다시 말하면 다음과 같은 파일이 제거됩니다 -rf
.
rm ./-rf