Разница связана с тем, что Linux резервирует 5% пространства (по умолчанию) в файловой системе для пользователя root. Вы можете сказать, что в вашем случае недостающая сумма составляет 5% от общей суммы. Это зарезервированное пространство не считается доступным и не используется. Таким образом, все цифры верны.
Linux делает это по разным причинам. Во-первых, если бы что-то полностью заполнило диск, на самом деле он бы занял только 95%. Таким образом, у системных процессов и пользователя root все еще остается пространство для маневра, чтобы исправить проблему без сбоя всей системы. Во-вторых, некоторые файловые системы (в частности, ext2 / 3) начнут страдать от фрагментации при работе почти на полную мощность в течение длительного времени, что снизит производительность.
Вы можете сначала с cd
по ..
, а затем использовать $PWD
.
Несколько идей:
parent="$(dirname "$(pwd)")"
parent="$(
cd..
pwd
)"
В GNU coreutils есть командаrealpath
, которая делает именно это.
/tmp/a$ realpath..
/tmp
Обратите внимание, что если путь содержит символические ссылки, он также разрешает:
/tmp/b/c$ realpath..
/tmp/x/y
(Здесь /tmp/b
была символической ссылкой на/tmp/x/y/
)
Это может отличаться от того, что делает оболочка с cd..
. Например. cd../..
из /tmp/b/c
в Bash показывает новый путь как /tmp/
, а не как /tmp/x
.