今日のディスク使用量を確認し、次のコマンドを実行しました(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ディレクトリがユーザーディレクトリサイズの正確に2倍になっているのに、ユーザーディレクトリが/homeの唯一のディレクトリのように見えるのはなぜですか?
ベストアンサー1
shopt dotglob
同じシェルで実行してみてください。
おそらくdotglob
そうでない場合、*
拡張子(ワイルドカード)に名前が始まるファイルとディレクトリが含まれなくなります(ワイルドカード拡張子には絶対に含まれないと確信する特別なディレクトリ.
エントリを含む)。 )を含むように拡張機能を混乱させます。.
..
rm -rf ./*
./..
したがって、実行すると、du -hs /home
そのディレクトリ内のすべての項目が計算されますが、du -hs /home/*
それまで拡張されるため、du -hs /home/paper
後者のディレクトリのみが計算されます。
これには暗号化されたデータが含まれる可能性があるため、/home/.ecryptfs
復号化されたデータとサイズがほぼ同じであることが合理的です。したがって、ファイルは実際には2回カウントされますが、du
親ディレクトリを指している場合にのみ適用されます。
shopt -s dotglob
そのシェルセッションでdotglob設定をオンにして再度実行するsudo du -hs /home/*
と、実行したときと同じサイズで表示されることがわかりますsudo du -hs /home
。
echo
これを示すもう1つの方法は、コマンドの先頭に配置することです。たとえば、シェルがどのように拡張されるかを示しますdu -hs /home/*
。echo du -hs /home/*
*
記述子として、私は習慣的にすべてのことを経験しないでくださいsudo
。必要に応じてsudoを使用し、それ以外の場合は使用しないでください。たとえば、ディレクトリは誰でも読むことができるため、ls -la /home
スーパーユーザーとして実行する必要はありません。/home