"ls -l"을 수행하면 다음과 같은 결과가 나올 수 있습니다.
-rw-r--r-- 1 root root 209 Mar 30 17:41 fname
첫 번째 필드는 입니다 -
. 이는 파일임을 의미합니다.
파일이 아닌 디렉토리인 경우 첫 번째 필드는 입니다 d
.
유닉스 개발자들은 왜 d
디렉토리에는 명확하고 직관적인 것을 사용하고, -
파일을 나타내는 데에는 a를 사용하기로 결정했을까요? 파일 에는 왜 안되나요 f
?
편집하다
매우 흥미로운 반응. 다양한 아이디어가 있으며, 그 이유 때문에 구현 및/또는 문서화된 것보다 일부가 더 무심코 사실인 것처럼 보일지라도 모두 의미가 있습니다.
답변1
ls
역사적으로 Unix의 큰 디자인 결정 중 하나는 모든 것을 파일로 처리하는 것이었습니다 stat
. 예를 들어 V3(1973년 2월)에서는stat
맨페이지(사용된 패턴을 설명합니다 ls
) 말한다
패턴은 다음 문자 의미를 지닌 6자 문자열입니다.
s
: 파일이 매우 작습니다(4096바이트 미만)
l
: 파일이 매우 큽니다.d
: 파일이 디렉터리입니다
x
. : 파일이 실행 가능합니다
u
. : 실행 시 사용자 ID가 설정됩니다.
-
: 위에 해당되지 않습니다.
등.
V4(1973년 10월)에서는 모드가 오늘날의 모드와 비슷해지기 시작했습니다.ls
맨페이지설명하다
이 옵션에서 인쇄되는 패턴은
-l
10자를 포함하며 다음과 같이 설명됩니다.첫 번째 문자는
d
항목이 디렉토리인지 여부를 나타내고
b
항목이 블록 유형의 특수 파일인 경우
c
항목
-
이 일반 파일인 경우를 나타냅니다.다음 9개 문자는 각각 3자리 숫자로 구성된 세 그룹으로 해석됩니다.
따라서 Unix 제작자는 일반 파일이 특별한 것이 아닌 "그냥" 기본값이라고 생각한 것 같습니다. 따라서 문자를 사용할 자격이 없습니다. 모든 것이 파일이고 일반 파일이 아닌 파일만 추가 설명이 필요합니다. . -
이를 "특수성"이 부족하다는 신호로 받아들일 수 있습니다 .
엄밀히 말하면, 디자인 결정은 모든 것을 파일로 처리하는 것이 아니라 파일 시스템을 통해 모든 것에 액세스할 수 있도록 하는 것이었지만 결과적으로 모든 것을 일종의 파일로 사용할 수 있어야 하므로 다양한 유형의 파일을 구별할 수 있는 능력이 필요합니다. 파일 . 바라보다섹션 3UNIX 시간 공유 시스템.