![실행 파일과 내장 기능이 -로 시작하는 문자열 인수를 스위치로 해석하지 못하도록 차단하시겠습니까? [복사]](https://linux55.com/image/163682/%EC%8B%A4%ED%96%89%20%ED%8C%8C%EC%9D%BC%EA%B3%BC%20%EB%82%B4%EC%9E%A5%20%EA%B8%B0%EB%8A%A5%EC%9D%B4%20-%EB%A1%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EC%9D%B8%EC%88%98%EB%A5%BC%20%EC%8A%A4%EC%9C%84%EC%B9%98%EB%A1%9C%20%ED%95%B4%EC%84%9D%ED%95%98%EC%A7%80%20%EB%AA%BB%ED%95%98%EB%8F%84%EB%A1%9D%20%EC%B0%A8%EB%8B%A8%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
파일에서 대시로 시작하는 문자열을 검색한다고 가정해 보겠습니다 "-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
더 편합니다 .