이와 관련하여 많은 질문이 있습니다.ls 출력 이해,ls -la의 열은 무엇입니까?,"ls -la"는 무엇을 합니까?,ls -al 출력의 필드는 무엇을 의미합니까?등.
나는 또한 그것을 설명하려는 기사가 있는 다른 많은 웹사이트를 접했습니다.
그들 각각의 공통점은 열의 의미를 적었음에도 불구하고 원래 해당 정보를 얻은 위치에 대한 링크/참조가 전혀 없다는 것입니다. 세 번째 질문에 대한 답변은 다음과 같습니다.coreutils 매뉴얼, 그러나 여전히 지침을 제공하지 않는 맨페이지와 매우 유사합니다.
위의 리소스는 드라이버를 개발 중이며 ls -l
블록/문자 장치의 주 번호와 부 번호가 제공되는 것을 발견했기 때문에 불완전합니다(이는 파일이나 디렉터리에 대한 일반 출력과 다릅니다).
여기서 장치의 메이저/마이너 번호는 각각 1과 3입니다.
누군가가 기사에서 언급했기 때문에 이것을 알게되었습니다.답변(관련없는 질문). 이전에 이 숫자가 무엇을 의미하는지 궁금했다면, 우연히 발견하지 않으면 답을 찾을 수 없었을 것입니다. 아니면 소스코드를 확인해 보세요.
거의 모든 Linux 사용자가 사용하는 도구의 경우 출력에 대한 올바른 정보가 없다는 것이 이상해 보입니다. 그럼 내가 뭔가를 놓치고 있는 걸까? 어디에 기록되어 있나요?
편집: Muru가 댓글에서 또 다른 질문을 언급했습니다.ls -l에서 필드의 의미를 찾는 방법- 이 질문에 제안된 답변은 주로 맨페이지를 언급하고(직접 붙여넣기), GNU coreutils의 경우 완전한 답변을 제공하지 않습니다(맨페이지는 주요/부 장치 번호를 언급하지 않습니다). BSD 매뉴얼 페이지에는 이렇게 나와 있지만 posix 표준에 대한 Stephen의 답변이 (제 생각에는) 가장 정확합니다.
답변1
ls
예POSIX에 의해 지정됨, 이는 공통 참조입니다. 출력 형식은 "STDOUT" 섹션에 설명되어 있습니다.
답변2
예, 사실 크기 필드는 major, minor
장치 파일로 대체되었습니다. 적어도 그 이후로는 그렇습니다.연구 유닉스 v51974년이며 적어도 그 이후로 문서화되었습니다.유닉스 v6 공부하기(v5 매뉴얼 페이지를 찾을 수 없음) GNU 구현 문서에 문서화되어 있지 않습니다 ls
(지금은 고쳐졌어다음과 같은이 버그 보고서, 감사합니다).
이것ls
유틸리티에 대한 POSIX 사양ls
GNU를 포함한 대부분의 구현 ls
은크기일부로 대체됨<device-info>
문제의 장치와 관련된 구현 정의 정보, GNU의 경우 ls
원래 Unix 구현에서와 마찬가지로그건 항상major, minor
. 그러나 원래 Unix 구현과 달리 GNU는 ls
주 장치 번호와 부 장치 번호 사이에 쉼표 외에 항상 최소한 하나의 공백이 있음을 보장합니다.
적어도 1개POSIX 환경이는 POSIXLY_CORRECT
환경 변수를 설정하는 것과 같지만 BLOCKSIZE
, , BLOCK_SIZE
, 중 아무것도 설정하지 않습니다 LS_BLOCK_SIZE
. 단, 이 경우에는 해당 변수 중 어느 것도 관련이 없습니다.
² 이는 비지박스(busybox) 또는 토이박스(toybox)의 구현과 같은 여러 다른 구현의 경우에도 해당되며, ls
이는 Linux 기반 시스템(및 자체)에서도 일반적입니다.아니요POSIX 호환)이지만 전부는 아닙니다. 예를 들어, ast-open의 항목에는 공백이 포함되지 않으며 모든 숫자를 길이 3까지 0으로 채우는 반면(예: 001,005
), 일부는 여전히 길이 3까지 공백으로 채워서 공백으로 구분된 필드 수가 가변적으로 생성됩니다( for 1, 5
와 마찬가지로 ). 7,128
사례). ls -l
출력을 안정적으로 또는 이식 가능하게 구문 분석할 수 없는 여러 이유 중 하나입니다.