오늘 디스크 사용량을 확인하고 다음 명령을 실행했습니다(sudo를 사용하여 "권한 거부" 메시지가 표시되지 않음)
$ du -hs /home
26G /home
$ ls -la /home
total 24
drwxr-xr-x 4 root root 4096 Dec 27 2017 .
drwxr-xr-x 25 root root 4096 Oct 1 17:39 ..
drwxrwxr-x 3 root root 4096 Dec 27 2017 .ecryptfs
drwx------ 53 paper paper 12288 Oct 6 14:38 paper`
$ du -hs /home/*
13G /paper
/home 디렉토리가 사용자 디렉토리 크기의 정확히 두 배인데도 사용자 디렉토리가 /home에 있는 유일한 디렉토리처럼 보이는 이유는 무엇입니까?
답변1
shopt dotglob
동일한 쉘에서 실행 해 보십시오 .
아마도 dotglob
그렇지 않은 경우 *
확장자(와일드카드)에 이름이 시작하는 파일과 디렉터리가 포함되지 않게 됩니다(와일드카드 확장자에 절대 포함되지 않을 것으로 확신하는 .
특수 디렉터리 항목 포함 ) . )을 포함하도록 확장 프로그램을 혼란스럽게 만듭니다 ..
..
rm -rf ./*
./..
따라서 실행하면 du -hs /home
해당 디렉터리의 모든 항목이 계산되지만 du -hs /home/*
까지만 확장되므로 du -hs /home/paper
후자 디렉터리만 계산됩니다.
여기에는 암호화된 데이터가 포함될 수 있으므로 /home/.ecryptfs
해독된 데이터와 크기가 거의 같다는 것이 합리적입니다. 따라서 파일은 실제로 두 번 계산되지만 du
상위 디렉터리를 가리키는 경우에만 해당됩니다 .
shopt -s dotglob
해당 쉘 세션에서 dotglob 설정을 켜고 다시 실행 sudo du -hs /home/*
하면 실행했을 때와 동일한 크기로 표시되는 것을 볼 수 있습니다 sudo du -hs /home
.
echo
이를 보여주는 또 다른 방법은 명령 시작 부분 에 넣는 것입니다 . 예를 들어 쉘이 어떻게 확장되는지 보여줄 du -hs /home/*
수 있습니다 .echo du -hs /home/*
*
서술자로서,나는 습관적으로 모든 일을 겪기 시작하지 말 것을 권한다 sudo
. 필요한 경우 sudo를 사용하고, 그렇지 않으면 사용하지 마십시오. 예를 들어, 디렉토리는 누구나 읽을 수 있으므로 ls -la /home
수퍼유저로 실행할 필요가 없습니다 ./home