파일은 /proc/
누구나 읽을 수 있는 것처럼 보이지만 거부된 권한을 반환합니다.
$ ls -lh /proc/5589/smaps
-r--r--r-- 1 root root 0 Mar 18 13:11 /proc/5589/smaps
$ cat /proc/5589/smaps
cat: /proc/5589/smaps: Permission denied
그러한 파일을 읽는 것을 피하고 싶지만 -r
검사가 통과되었습니다.
$ if [ -r /proc/5589/smaps ] ; then echo readable ; fi
readable
파일을 실제로 읽을 수 있는지 확인하는 방법은 무엇입니까?
답변1
if cat /proc/5589/smaps 2>/dev/null 1>/dev/null; then
echo readable ;
fi
아니면 덜 읽으세요
if head -n 1 /proc/5589/smaps 2>/dev/null 1>/dev/null; then
echo readable ;
fi
고쳐 쓰다:
내 생각에는 스크립트에서 다음 두 가지 검사를 결합해야 한다고 생각합니다. 1) if [ -r /proc/5589/smaps ] 2) if cat /proc/5589/smaps 2>/dev/null 1>/dev/null;
따라서 먼저 파일 권한을 확인한 다음 proc 파일을 읽은 결과를 확인하십시오. 예를 들어:
filename="/proc/5589/smaps"
if test -r "$filename" && cat "$filename" 2>/dev/null 1>/dev/null; then
echo readable
else
echo not readable
fi