!["rm #*"을 사용하여 #으로 시작하는 파일을 삭제하는 방법은 무엇입니까?](https://linux55.com/image/125906/%22rm%20%23*%22%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%23%EC%9C%BC%EB%A1%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
Bash에서 을(를) 제거하고 싶습니다 #
. rm #*
그러나 다음 메시지를 받았습니다: rm: missing operand
.
그렇다면 이 목표를 달성하는 방법은 무엇입니까?
답변1
옥토소프( #
) 또는 파운드 기호는 주석 문자입니다.POSIX 구문은 여기에 있습니다말한 바와 같이:
현재 문자가 "#"인 경우 해당 문자와 다음 <newline> 이전(포함하지 않음)의 모든 후속 문자는 주석으로 삭제됩니다. 줄을 끝내는 <newline>은 주석의 일부로 간주되지 않습니다.
따라서 주석으로 해석되지 않도록 파운드 기호를 인용하거나 이스케이프 처리해야 합니다.
rm '#'*
또는
rm "#"*
또는
rm \#*
답변2
주석을 시작 하지만 #
단어 시작 부분에서만 주석을 수행합니다. 따라서 경로(예: ./
현재 디렉터리) 앞에 접두사를 추가하면 비활성화될 수도 있습니다.
rm ./#*
덧붙여, 접두사는 대시 ( )로 시작하는 파일 이름이 명령 옵션으로 해석되는 것을 방지하는 두 가지 방법 중 하나 ./
이기도 합니다 .-like-this
답변3
쉘이 다음과 같은 경우 주석으로 사용되는 문자를 bash
비활성화할 수 있습니다.#
대화형 셸에서그리고
shopt -u interactive_comments
이 쉘 옵션을 지운 후,
rm #*
이스케이프 처리 없이 원래 예상한 대로 작동해야 합니다 #
.
답변4
사용 중인 쉘 설정에 따라 다름
rm \#file
또는
rm '#file'
또는 특수 문자인 경우 #으로 해석되어 표시됩니다.
rm ?file
일할 수있다