답변:
가장 중요한 차이점은 >
셸에서 O_WRONLY|O_CREAT|O_TRUNC
플래그를 사용 하여 파일 또는 파일과 유사한 객체를 열도록하는 것입니다. 파일이 있으면 파일이 만들어 지거나 잘리는 반면 플래그 >>
가있는 파일 을 여는 경우 O_WRONLY|O_CREAT|O_APPEND
파일이 있으면 파일이 만들어 지거나 추가됩니다. 시스템 호출을 추적하는 경우 (예 :
$ strace -e open,dup2 bash -c 'true >> /dev/null'
...
open("/dev/null", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
dup2(3, 1) = 1
dup2(10, 1) = 1
그리고
$ strace -e open,dup2 bash -c 'true > /dev/null'
...
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1) = 1
dup2(10, 1) = 1
+++ exited with 0 +++
두 경우 모두 열린 파일의 파일 디스크립터는 명령의 파일 디스크립터 1 (stdout)에 복제되며 쉘 포크가 실행하는 모든 명령에 의해 상속됩니다.