Замените каталоги ./ и ../ реальными именами

Разница связана с тем, что Linux резервирует 5% пространства (по умолчанию) в файловой системе для пользователя root. Вы можете сказать, что в вашем случае недостающая сумма составляет 5% от общей суммы. Это зарезервированное пространство не считается доступным и не используется. Таким образом, все цифры верны.

Linux делает это по разным причинам. Во-первых, если бы что-то полностью заполнило диск, на самом деле он бы занял только 95%. Таким образом, у системных процессов и пользователя root все еще остается пространство для маневра, чтобы исправить проблему без сбоя всей системы. Во-вторых, некоторые файловые системы (в частности, ext2 / 3) начнут страдать от фрагментации при работе почти на полную мощность в течение длительного времени, что снизит производительность.

5
19.02.2019, 17:30
3 ответа

Вы можете сначала с cdпо .., а затем использовать $PWD.

1
27.01.2020, 20:32

Несколько идей:

parent="$(dirname "$(pwd)")"

parent="$(
   cd..
   pwd
)"
3
27.01.2020, 20:32

В 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.

12
27.01.2020, 20:32

Теги

Похожие вопросы