존재하지 않는 프로세스를 검색할 때, 예를 들어
$ ps aux | grep fnord
wayne 15745 0.0 0.0 13580 928 pts/6 S+ 03:58 0:00 grep fnord
분명히 나는 grep에 관심이 없습니다. 이는 프로세스를 검색하는 것만큼 의미가 있습니다 ps
!
grep이 결과에 표시되지 않도록 하려면 어떻게 해야 합니까?
답변1
해결책이 발견되었습니다.열쇠고리.
$ ps aux | grep "[f]nord"
문자 주위에 대괄호를 넣고 문자열 주위에 따옴표를 넣으면 "문자 'f' 뒤에 'nord'가 오는 문자를 찾으세요."라는 정규식을 검색할 수 있습니다.
하지만 패턴 'f'에 대괄호를 넣었으므로 이제 ']'가 뒤에 오므로 grep
결과 목록에 표시되지 않습니다. 니토!
답변2
내가 사용하는 또 다른 옵션(특히 프로세스가 실행 중인지 확인하기 위해)은 명령입니다 pgrep
. 일치하는 프로세스를 검색하지만 검색에 대한 grep 행은 나열하지 않습니다. 나는 정규식을 사용하거나 어떤 것도 벗어나지 않고 검색할 수 있는 빠른 방법이기 때문에 그것을 좋아합니다.
pgrep fnord
또한 일치하는 프로세스 ID와 프로세스 이름을 모두 인쇄하려면 (감사합니다.페머)
pgrep -l fnord
답변3
이상적인 솔루션은 BriGuy가 제시한 솔루션입니다.
pgrep fnord
하지만 그렇게 하고 싶지 않다면 다음과 일치하는 모든 줄을 제외하면 됩니다.grep와 함께:
ps aux | grep -v grep | grep "fnord"
답변4
zsh에서는 grep fnord =(ps aux)
.
아이디어는 먼저 실행하고 ps aux
결과를 파일에 넣은 다음 grep
해당 파일에서 사용하는 것입니다. 단, zsh의 "프로세스 대체"를 사용하므로 파일이 없습니다.
설명하려면 다음을 시도해 보세요.
ps aux > ps.txt
grep fnord ps.txt
rm ps.txt
결과는 동일해야 합니다.
일반 논평다른 답변 중 일부에 대해. 일부는 입력하기가 너무 복잡하거나 길다. 그것은 옳은 것의 문제일 뿐만 아니라, 사용 가능한 것이기도 해야 합니다. 그러나 이것이 이러한 솔루션 중 일부가 나쁘다는 것을 의미하지는 않습니다. 단, 사용할 수 있도록 하려면 미니 UI 내에 래핑되어야 합니다.