등을 ack
사용할 수 없거나 설치할 수없는 환경을 처리해야하는 경우이 명령은 C ++ 프로젝트를 통해 문자열을 찾기 위해 관련 파일 만 제한하려고합니다.
grep pattern --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
이것은 일을합니다. 이제 더 많은 상품을 가져 오려면 목표는이를 쉘 스크립트에 넣는 것입니다. 이름이이라고 가정 해 봅시다 wrapped_grep
. 내용은 다음과 같습니다 wrapped_grep
.
#!/usr/bin/env bash
shopt -s extglob # enable advanced pattern matching
grep $1 --color -- /project/path/**/*.*([chCH]|cc|cxx|[ch]pp|py)
그러나 wrapped_grep pattern
동일한 직접 grep 쿼리가 예상대로 일치하는 항목을 찾는 경우에도 시작하려고 하면 출력이 제공되지 않습니다.
직접 grep 호출과 동일한 결과를 제공하기 위해이 스크립트에서 누락 된 것은 무엇입니까?
extglob
쉘 옵션은 가능 *([chCH]|cc|cxx|[ch]pp|py)
표현식의 일부를하지만 **/
부분은 필요 globstar
옵션을
globstar If set, the pattern ** used in a pathname expansion con‐ text will match all files and zero or more directories and subdirectories. If the pattern is followed by a /, only directories and subdirectories match.
그래서 당신은 아마도
shopt -s extglob globstar
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다