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

Кроме того, как ориентир, вот то, как сбросить ВСЕ текущие правила iptables:

#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables=/sbin/iptables
$iptables -F
$iptables -X
$iptables -t nat -F
$iptables -t nat -X
$iptables -t mangle -F
$iptables -t mangle -X
$iptables -P INPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptables -P OUTPUT ACCEPT
1
18.11.2013, 01:47
1 ответ

Нет никакой опции просто возвратить одно поле. Однако опция -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))
2
27.01.2020, 23:39

Теги

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