ripgrep을 사용하여 다음과 같은 작업을 수행할 수 있습니다.
ps aux | rg 'process name'
이전 명령의 출력을 검색할 수 있습니다. 어떤 이유로 이것은 일반을 사용하여 작동합니다 grep
.
ps aux | grep 'process name'
그것은 내가 grep으로 파이프하려는 것을 무시하고 내가 입력한 프로세스에 대해 현재 작업 디렉토리를 검색합니다.
예를 들어, Firefox를 grep하면 표시되지 않습니다.
ps aux | rg firefox
나에게 이것을 주었다:
편집: 이는 여기에 설명된 일종의 앨리어싱 때문인 것 같습니다.https://unix.stackexchange.com/a/500727/375504
이것은 작동합니다:ps aux | \grep firefox
답변1
당신은 당신이 사용할 때 말한다ps aux | grep 'process name'
그것은 ( grep
) 내가 grep으로 파이프하려는 것을 무시하고 현재 작업 디렉토리를 검색합니다..
당신도 썼어요grep의 별칭은 다음과 같습니다.grep -nRi
.
grep
( )에 대한 문서를 보면 플래그가 설명하는 것과 정확히 일치하는 man grep
것을 볼 수 있습니다 .-R
-r
,--recursive
명령줄에 있는 경우에만 심볼릭 링크를 따라 각 디렉터리 아래의 모든 파일을 반복적으로 읽습니다. [...]
그리고
-R
,--dereference-recursive
각 디렉터리의 모든 파일을 재귀적으로 읽습니다. 모든 심볼릭 링크를 따르십시오.-r
GNU grep의 경우 grep -r
파일 이름 인수가 제공되지 않으면 기본값은 현재 디렉터리에서 시작됩니다. 일부 다른 버전의 grep은 이를 수행하지 않지만 stdin을 읽는 동안 "stdin의 재귀 검색"에 대해 경고할 수 있습니다.
grep
해결책은 다른 이름과 함께 별칭을 사용하지 않는 것입니다 . 특정 기능이 필요한 경우 새 별칭을 만듭니다( rgrep
예를 들어 여기서는 대안이 될 수 있음).
답변2
내 문제는 bash aliases 에 별칭을 추가했다는 것입니다 grep
. grep -nRi $*
별칭이나 통화를 제거하면 \grep
문제가 해결될 수 있습니다.