Как создать переменную только для размера, используемого и доступного для df?

Предположим, что я хочу создавать переменные, по одному на каждый размер, используемый и доступный при использовании df. Как я могу создавать переменные для каждого? Есть ли опция, которая возвращает только одну из этих вещей?

directorySize= directoryUsed= directoryAvailable= 

Скажем, я хочу создать эти переменные на основе домашнего каталога. Как мне это сделать?

  • du на ramdisk отображает на 3GB меньше, чем df
  • Нет свободного места на устройстве / Нет Inodes бесплатно ИЛИ используется / Двойной монтаж
  • Поиск файлов, которые используют наибольшее дисковое пространство
  • Получить имя и использование файловой системы с помощью `df -h`
  • От имени устройства df до имени физического диска (поставщика / типа)
  • Скажите fs на свободное место из удаленных файлов СЕЙЧАС
  • Корневая файловая система почти полная - я должен волноваться?
  • Как сделать df только в корневом разделе?
  • One Solution collect form web for “Как создать переменную только для размера, используемого и доступного для df?”

    Нет возможности просто вернуть одно поле. Однако опция -P гарантирует, что все поля будут напечатаны в одной строке (без этой опции, если первый столбец слишком широк, остальные будут перенесены на следующую строку). Затем вы можете использовать awk для печати нужного столбца со второй строки.

     size=$(df -Pk ~ | awk 'NR==2 {print $2}') # in kB 

    Чтобы сразу установить все переменные, вы можете сделать awk распечатать фрагмент оболочки.

     eval "$(df -Pk ~ | awk 'NR==2 {printf "size=%d used=%d available=%d", $2, $3, $4}')" 

    Несколько экзотических систем допускают пробелы в ярлыках файловой системы, что делает невозможным надежный синтаксический анализ вывода df . К сожалению, нет другого портативного способа.

    Только в Linux вы можете использовать команду stat . Это немного неуклюжие, размеры выражены в блоках.

     block_size=$(stat -f -c %S ~) total_blocks=$(stat -f -c %b ~) free_blocks=$(stat -f -c %f ~) size=$((block_size * total_blocks)) # in bytes available=$((block_size * free_blocks)) used=$((size - available)) 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.