유닉스 시스템의 모든 디렉토리 (그리고 아마도 다른 시스템도)는 적어도 두 개의 디렉토리 엔트리를 포함합니다. 이것들은 .
(현재 디렉토리)와 ..
(부모 디렉토리)입니다. 루트 디렉토리의 경우, 이들은 동일한 위치를 가리 키지 만 다른 디렉토리와는 다릅니다. Linux 에서 stat
, pwd
및 cd
명령을 사용하여이를 직접 확인할 수 있습니다 .
$ cd /
$ stat . .. bin sbin | grep Inode
Device: 802h/2050d Inode: 2 Links: 27
Device: 802h/2050d Inode: 2 Links: 27
Device: 802h/2050d Inode: 548865 Links: 2
Device: 802h/2050d Inode: 2670593 Links: 2
$ pwd
/
$ cd ..
$ pwd
/
$
공지 사항 bin
및 sbin
각이 두 개의 링크가 있습니다. 하나는 루트 디렉토리의 디렉토리 항목이고 다른 하나는 .
해당 디렉토리 내의 항목입니다.
ls
파이프와 함께 사용 하는 것은 wc -l
ls '출력에서 라인 수를 계산하는 간단한 트릭입니다. 각 파일 또는 디렉토리는 출력에서 정확히 한 줄을 차지한다고 가정합니다. GNU ls는 출력이 터미널이 아닌 경우 자동으로 수행합니다. 다른 사람들은 -1
동작을 명시 적으로 켜는 옵션 이 필요할 수 있습니다 . 입력 wc -l
의 라인 수 ( -l
)를 단순히 계산하고 출력합니다 .
이 접근 방식의 문제점은 Linux 및 Linux에서 전통적으로 사용되는 파일 시스템에서 파일 및 디렉토리 이름 (이 점에서 실제로는 동일하고 동일 함)에 개행 문자를 포함 할 수 있다는 것 입니다. 그것들이 존재하는 경우, 두 방법 모두 분리됩니다. 실제로 그러한 항목은 하나 일 때 둘 이상의 항목으로 계산됩니다.
GNU ls를 사용하고 있고 개행 문자를 포함하는 이름을 가진 디렉토리 항목이없고 ls
(예를 들어 ls -a
)에 대한 별명이없는 경우 , 둘 다 현재 (또는 지정된) 디렉토리의 파일 및 디렉토리 수를 출력합니다. 대부분의 사람들에게 이것은 충분하지만 일반적인 경우에는 유효하지 않습니다 .
디렉토리 항목 이름에서 이상한 문자 (주로 개행 문자)를 올바르게 처리해야하는 경우 ls -b
옵션을 사용하여 이스케이프 처리하는 것이 좋습니다 . ls -1bA
각 디렉토리 항목 이름을 한 줄에 인쇄하고, 점 파일 및-디렉토리를 포함하여 특이한 문자를 피하십시오 (각 디렉토리 항목은 하나로 표시됨). 압정 wc -l
의 전체 명령 라인 ls -1bA | wc -l
(그러나 무시 현재 디렉토리에있는 파일 및 디렉토리의 수를보고하는 .
과 ..
; 사이의 차이점 -a
과 -A
),하지만 어떤 서브 디렉토리로 내려. 도트 파일을 총계로 계산하지 않으려면 -A
매개 변수를로 생략하십시오 ls
.