Ubuntu grep, find 등: "권한이 거부되었습니다" 및 "해당 파일 또는 디렉터리가 없습니다" 출력

Ubuntu grep, find 등: "권한이 거부되었습니다" 및 "해당 파일 또는 디렉터리가 없습니다" 출력

grepor 를 사용할 때 find다음과 같은 "권한이 거부되었습니다" 및 "해당 파일이나 디렉터리가 없습니다"라는 알림이 표시되어 항상 짜증이 납니다.

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn
grep: ./lib/ufw/user6.rules: Permission denied
grep: ./lib/ufw/user.rules: Permission denied
grep: ./lib/init/rw/udev/watch/27: No such file or directory
grep: ./lib/init/rw/udev/watch/26: No such file or directory
grep: ./lib/init/rw/udev/watch/25: No such file or directory

어떻게 하면 이를 방지하고 관련 데이터, 즉 내가 정말로 찾고 있는 데이터만 볼 수 있습니까?

답변1

grep을 사용하면 @ortang이 말한 것과 거의 같은 작업을 수행하는 -s 플래그를 지정할 수 있습니다.

-s, --no-메시지 존재하지 않거나 읽을 수 없는 파일에 대한 오류 메시지를 표시하지 않습니다. 이식성 참고 사항: GNU grep과 달리 7판 Unix grep은 -q가 없고 -s 옵션이 GNU grep의 -q 옵션처럼 동작했기 때문에 POSIX를 따르지 않았습니다. USG 스타일 grep에는 -q가 없지만 -s 옵션은 GNU grep처럼 작동했습니다. 이식 가능한 쉘 스크립트는 -q와 -s를 모두 피해야 하며 대신 표준 및 오류 출력을 /dev/null로 리디렉션해야 합니다.

내가 아는 한 @ortangs 답변이 최고입니다. 같은 것

find / -name "myfile" -type f -print 2>/dev/null

답변2

stderr로 리디렉션해 보세요 /dev/null.

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn

답변3

strerr다음 으로 리디렉션 중/dev/null(일명black hole)은 권한 거부 오류를 억제하는 좋은 방법입니다.

하지만 이 상처는 permission denied메시지를 억제할 뿐만 아니라모두오류 메시지.

다른 오류 메시지를 유지하려면 permission denied다음과 같이 할 수 있습니다.

grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log

이를 유지하고 싶지 않다면 다음과 같이 하면 됩니다.

grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn

답변4

grep -v가 처리하기 전에 "|&"를 사용하면 다음과 같습니다.

grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn |& grep -v 'permission denied'

관련 정보