실행 파일과 내장 기능이 -로 시작하는 문자열 인수를 스위치로 해석하지 못하도록 차단하시겠습니까? [복사]

실행 파일과 내장 기능이 -로 시작하는 문자열 인수를 스위치로 해석하지 못하도록 차단하시겠습니까? [복사]

파일에서 대시로 시작하는 문자열을 검색한다고 가정해 보겠습니다 "-something". 예를 들면 다음과 같습니다.

grep "-something" filename.txt

grep그러나 다른 실행 파일과 내장 프로그램에서는 이것이 인식하지 못하는 명령줄 스위치일 것으로 예상하기 때문에 오류가 발생합니다 . 이런 일이 발생하지 않도록 하는 방법이 있나요?

답변1

정규식 패턴을 표시하는 데 사용됩니다 grep.-e

grep -e "-something" filename.txt

일반적인 내장 기능 사용의 경우 --많은 유틸리티에서 "옵션 끝"을 표시합니다(GNU grep에서는 표시되지 않음).

답변2

grep간단한 문자 목록을 사용하여 실제로 하이픈으로 시작하지 않도록 정규식을 변경할 수도 있기 때문입니다 .

 grep '[-]something'

이 트릭은 전통적으로 잘못된 일치를 피하기 위해 사용되었습니다 ps.

ps -f | grep myprog 
# lists both the process(es) running myprog AND the grep process
# making it harder to do things like choose the right process to kill(1)

ps -f | grep '[m]yprog'
# lists only the 'real' processes because [m]yprog matches "myprog" 
# but [m]yprog does NOT match "grep [m]yprog"

하지만 현대에는 그냥 pgrep(또는 )을 사용하는 것이 pkill더 편합니다 .

관련 정보