![왜 "점"을 두 번 이스케이프 처리해야 합니까?](https://linux55.com/image/39908/%EC%99%9C%20%22%EC%A0%90%22%EC%9D%84%20%EB%91%90%20%EB%B2%88%20%EC%9D%B4%EC%8A%A4%EC%BC%80%EC%9D%B4%ED%94%84%20%EC%B2%98%EB%A6%AC%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
*(){}$
with와 같은 특수 문자를 이스케이프 처리 \
하여 리터럴로 처리 할 수 있다는 것을 알고 있습니다 .
예를 들어 \*
또는\$
하지만 .
두 번 해야 한다면, 그렇지 않으면 \\.
특수 문자로 간주됩니다. 예:
man gcc | grep \\.
왜 그럴까요?
답변1
일반적으로 특수 문자를 문자 그대로 처리하려면 한 번만 이스케이프하면 됩니다. 여러 프로그램에서 패턴을 사용하기 때문에 두 번 수행해야 하는 경우도 있습니다.
귀하의 예를 논의해 보겠습니다.
man gcc | grep \\.
명령은 bash
인터프리터와 grep
. 첫 번째 이스케이프는 bash
Know를 \
문자 그대로 받아들이게 하므로 두 번째 이스케이프가 전달됩니다 grep
.
한 번만 이스케이프하면 점이 문자 그대로 취해져서 에 전달된다는 것을 \.
알 수 있습니다 . 이것을 볼 때 점은 텍스트가 아닌 특수 문자라고 생각합니다.bash
.
grep
grep
.
.
두 번 이스케이프하면 bash
패턴이 \.
에 전달됩니다 grep
. 이제 grep
문자 그대로의 지점이라는 것을 알 수 있습니다.
답변2
Bash가 인수를 해석하지 못하도록 하려면 인수를 따옴표로 묶으세요.
man gcc | grep "\."