저는 cygwin의 grep을 사용하여 C 드라이브에 하드코딩된 경로의 모든 인스턴스를 찾습니다. 행위:
grep -r "c:\\" .
주어진grep: trailing backslash
내가 어떻게 할 수 있는지 아는 사람 있나요?
답변1
오류는 큰따옴표( )를 사용했기 때문에 발생합니다 "
. 이를 통해 내용이 도착하기 전에 쉘이 내용을 해석할 수 있습니다 grep
.
시도 grep -r 'c:\\' .
해봐.
echo 'c:\' > test
ire@localhost$ cat test
c:\
ire@localhost$ grep -r 'c:\\' test
c:\
설명하다: \
shell과 grep에 특별한 의미가 있습니다. 다음 문자를 문자 그대로 해석할 수 있도록 이스케이프 문자로 사용됩니다.
이렇게 하면 grep "c:\\"
셸은 콘텐츠를 가져와서 리터럴 문자열로 변환 c:\
하고 에 전달합니다 grep
. grep
단일 백슬래시가 표시되고 이스케이프 문자로 해석됩니다. 하지만 따라가거나 \
도망칠 캐릭터는 없습니다! 그러므로 불평하는 것이 합리적입니다.
'
셸에서 내용을 보호하려면 작은따옴표( )를 사용하세요 . 하지만 여전히 두 개의 슬래시가 필요합니다. 왜냐하면 grep
이것이 찾고 있는 문자 그대로의 백슬래시임을 알려야 하기 때문입니다 .
또는 다음을 수행할 수 있습니다.
grep -rF 'C:\' .
또는
grep -rF "C:\\" .
grep 옵션 -F
(이전에는 fgrep
명령이라고 함)은 grep
다음을 찾도록 지시합니다.고정 문자열이므로 이스케이프할 항목이 없으며 백슬래시는 특별하지 않습니다 grep
(그러나 큰따옴표 안의 쉘에는 여전히 적용됩니다).
답변2
또는 직접 사용하십시오 "c:/"
(Windows에서도 사용 가능).