*(){}$
with와 같은 특수 문자를 이스케이프 처리 \
하여 리터럴로 처리 할 수 있다는 것을 알고 있습니다 .
예를 들어 \*
또는\$
하지만 .
두 번 해야 한다면, 그렇지 않으면 \\.
특수 문자로 간주됩니다. 예:
man gcc | grep \\.
왜 그럴까요?
답변1
일반적으로 특수 문자를 문자 그대로 처리하려면 한 번만 이스케이프하면 됩니다. 여러 프로그램에서 패턴을 사용하기 때문에 두 번 수행해야 하는 경우도 있습니다.
귀하의 예를 논의해 보겠습니다.
man gcc | grep \\.
명령은 bash
인터프리터와 grep
. 첫 번째 이스케이프는 bash
Know를 \
문자 그대로 받아들이게 하므로 두 번째 이스케이프가 전달됩니다 grep
.
한 번만 이스케이프하면 점이 문자 그대로 취해져서 에 전달된다는 것을 \.
알 수 있습니다 . 이것을 볼 때 점은 텍스트가 아닌 특수 문자라고 생각합니다.bash
.
grep
grep
.
.
두 번 이스케이프하면 bash
패턴이 \.
에 전달됩니다 grep
. 이제 grep
문자 그대로의 지점이라는 것을 알 수 있습니다.
답변2
Bash가 인수를 해석하지 못하도록 하려면 인수를 따옴표로 묶으세요.
man gcc | grep "\."