我如何*只*获取bash中磁盘上可用的字节数?

时间:2015-10-21 01:42:27

标签: linux bash shell unix df

df在概述方面做得很好。但是如果我想在shell脚本中将变量设置为磁盘上可用的字节数呢?

示例:

$ df
Filesystem            1K-blocks     Used Available Use% Mounted on
/dev/sda             1111111111  2222222  33333333  10% /
tmpfs                  44444444      555  66666666   1% /dev/shm

但我只想返回33333333/上可用的字节数),而不是整个df输出。

7 个答案:

答案 0 :(得分:6)

您可以使用awk,

df | awk '$1=="/dev/sda"{print $4}'

答案 1 :(得分:4)

便携地:

df -P /dev/sda1 | awk 'NR==2 {print $4}'

-P选项可确保df以预期的格式打印输出,特别是在设备名称后不会破坏该行,即使它很长。将设备名称作为参数传递给df可以消除解析的任何危险,例如在查询/dev/sda10时获取/dev/sda1的信息。 df -P只打印两行,标题行(您忽略)和打印所需列的一行数据。

df存在显示包含空格的设备名称的风险,例如,如果按名称装入卷且名称包含空格,或者远​​程装入点包含空格的NFS卷。在这种情况下,没有完全可移植的方法来解析df的输出。如果您确信df将显示您传递给它的确切设备名称(情况并非总是这样),您可以将其删除:

df -P -- "$device" | awk -vn=${#device} 'NR==2 {$0 = substr($0, n+1); print $3}'

答案 2 :(得分:3)

你可以使用awk

df | grep sda | awk '{print $4}'

答案 3 :(得分:2)

仅限Linux

df --output=avail

答案 4 :(得分:1)

您也可以使用import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { Http } from '@angular/http'; import { map } from 'rxjs/operators'; @Injectable() export class DataService { users: string[]; data: Observable<Array<number>>; constructor(public http: Http) { this.users = ['supun' , 'madhushi' , 'kennady' , 'sachini']; } getUsers() { return this.users; } getUsers1() { return this.http.get('http://jsonplaceholder.typicode.com/users') .map(res => res.json()); } getData() { this.data = new Observable(observer => { setTimeout(() => { observer.next(1); }, 1000); setTimeout(() => { observer.next(2); }, 2000); setTimeout(() => { observer.next(3); }, 3000); setTimeout(() => { observer.next('hello'); }, 4000); setTimeout(() => { observer.complete(); }, 5000); }); return this.data; } } 查询磁盘状态。要查询安装在stat上的文件系统上的空闲块:

/

要以字节而不是块为单位获取结果,可以使用Shell的算法:

stat -f -c '%f' /

答案 5 :(得分:0)

使用df可能会获得确切的字节数:

df -B1 / Filesystem 1B-blocks Used Available Use% Mounted on /dev/mapper/cl-root 32893632512 13080072192 18119061504 42% /

答案 6 :(得分:0)

与所示的答案非常相似,但是如果您不知道文件系统的名称,而只是在寻找分区上的总可用空间。

df -P --total | grep 'total' | awk '{print $4}'