파일 비교를 위해 diff 명령어 사용 시, no such file or directory 메시지가 나오는 경우가 있다. 특정 파일을 symbolic 링크로 참조하고 있으나, 참조된 파일이 없는 경우 발생한다. 이때 --no-dereference 옵션을 사용하면 해당 에러 메시지를 출력하지 않는다. linked로 연결된 파일을 비교하지 않고 링크 path 정보 자체로만 비교를 한다. 아래 예시를 통해 차이점을 비교해보았다.
test1 폴더 | test2 폴더 |
A.so -> /usr/lib/tc/mx_xt.so B.so -> /usr/lib/test123 C.so -> /usr/lib/ssl |
A.so -> /usr/lib/tc/mx_xt.so B.so -> /usr/lib/test123 C.so -> /usr/lib/ssl_test |
A.so : 같은 path를 참조. mx_xt.so 존재(O) B.so : 같은 path를 참조. 실제 test123 없음(X) C.so : 다른 path 참조. ssl 존재(O), ssl_test 없음(X) |
--no-dereference 옵션 사용 유무에 따른 diff 결과를 비교해보았다.
diff -r test1 test2 결과 : diff: test1/B.so: No such file or directory diff: test2/B.so: No such file or directory diff: test2/C.so: No such file or directory |
B.so의 link로 연결된 test123 파일은 실제 없는 파일이다. 결국 No such file or directory 메시지를 출력한다. 또한 test2의 C.so 파일에 연결된 ssl_test 파일 또한 없는 파일이다. 파일 또는 폴더 자체가 없어 비교를 거부한다.
diff -r --no-dereference test1 test2 결과 : Symbolic links test1/C.so and test2/C.so differ |
--no-dereference 옵션 사용시, link path 정보로 diff 작업을 수행한다. test1의 B.so과 test2의 B.so 파일 모두 link된 파일이 존재하지 않으나, 같은 path를 가리키고 있어 동일한 파일로 인식했다. test2의 C.so 링크된 path 파일도 실제 없는 파일이지만 path 자체로만 비교를하였으며 결과 값과 같이 다르다고 알려준다.
'Programming > C++' 카테고리의 다른 글
ubuntu 서버에 새로운 계정 추가하기. 계정 추가 후 로그인 안될 때 (0) | 2022.11.19 |
---|---|
bash shell 스크립트 정규식 url 날짜 정보 추출 url 파일 다운 받기 (0) | 2022.11.19 |
정규식 IP주소만 추출하는 방법 in Qt5 (0) | 2021.11.06 |
swp 파일 삭제해도 괜찮을까? 생성되는 이유(in Linux) (0) | 2021.10.31 |
fsync() 와 sync() 차이점 및 활용법(linux, Qt5) (0) | 2021.10.24 |
댓글