df
の出力を取得するには データを kb で表示するには、-k
を使用するだけです フラグ:
df -k
また、ファイルシステムを df
に指定すると 、すべてではなく、その特定の値を取得します:
df -k /example
質問の本文について:特定のファイルシステムの空きディスク容量を抽出したいと考えています。これにはいくつかの処理が必要です。
通常の df -k
を考えると 出力:
$ df -k /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7223800 4270396 2586456 63% /
Available
を取得できます (4 列目) たとえば awk
の場合 または cut
(以前は tr
にパイプしました squeeze-repeats
へ (-s
) スペース):
$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456
いつものように、結果を変数に格納する場合は、var=$(command)
を使用します 次のような構文:
$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456
また、Tim Bunce のコメントから、 --direct
を使用して長いファイルシステム名を処理できます -
を取得するには 代わりに、エンジンを壊す行を出力しないようにします:
$ df -k --direct /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
- 7223800 4270396 2586456 63% /
stat(2) コマンドを使用して空きブロックを表示したり、各ブロックの大きさを調べたりできます。たとえば、
stat -f --printf="%a %s\n" /
特定のファイル システム (/) の空きブロック数 (%a) に続いてブロック サイズ (%s) が表示されます。サイズを kB で取得するには、次の例のように bc(1) コマンドを使用できます:
stat -f --printf="%a * %s / 1024\n" / | bc
最後に、これを変数に入れるには、バックティック置換 (または最初の回答のように $() ) を使用するだけの問題です:
SOMEVAR=`stat -f --printf="%a * %s / 1024\n" / | bc`