예를 들어 존재하지 않는 프로세스를 검색할 때
$ 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에 캡슐화되어야 합니다.