我怎样才能*仅*获得 bash 磁盘上的可用字节数?
How can I *only* get the number of bytes available on a disk in bash?
df
在概述方面做得很好。但是,如果我想将 shell 脚本中的变量设置为磁盘上可用的字节数怎么办?
示例:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 1111111111 2222222 33333333 10% /
tmpfs 44444444 555 66666666 1% /dev/shm
但我只想 return 33333333
(/
上可用的字节),而不是整个 df
输出。
仅在Linux
df --output=avail
你可以用awk,
df | awk '=="/dev/sda"{print }'
你可以使用 awk
df | grep sda | awk '{print }'
便携:
df -P /dev/sda1 | awk 'NR==2 {print }'
-P
选项确保 df
将以预期的格式打印输出,特别是不会在设备名称后换行,即使它很长。将设备名称作为参数传递给 df
可以消除解析的任何危险,例如在查询 /dev/sda1
时获取 /dev/sda10
的信息。 df -P
只打印两行,header 行(您忽略)和打印所需列的数据行。
存在 df
显示包含空格的设备名称的风险,例如,如果卷按名称安装且名称包含空格,或者对于其远程安装点包含空格的 NFS 卷。在这种情况下,没有完全可移植的方法来解析 df
的输出。如果您确信 df
会显示您传递给它的确切设备名称(情况并非总是如此),您可以删除它:
df -P -- "$device" | awk -vn=${#device} 'NR==2 {[=11=] = substr([=11=], n+1); print }'
您也可以使用stat
查询磁盘状态。查询挂载在 /
:
的文件系统上的空闲块
stat -f -c '%f' /
要以字节而不是块为单位获取结果,您可以使用 shell 的算法:
echo $((`stat -f -c '%f*%S' /`))
您可以使用 df:
获得确切的字节数
df -B1 /
Filesystem 1B-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 32893632512 13080072192 18119061504 42% /
与显示的答案非常相似,但如果您不知道文件系统的名称并且只是在分区上寻找可用的总数 space。
df -P --total | grep 'total' | awk '{print }'
df
在概述方面做得很好。但是,如果我想将 shell 脚本中的变量设置为磁盘上可用的字节数怎么办?
示例:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 1111111111 2222222 33333333 10% /
tmpfs 44444444 555 66666666 1% /dev/shm
但我只想 return 33333333
(/
上可用的字节),而不是整个 df
输出。
仅在Linux
df --output=avail
你可以用awk,
df | awk '=="/dev/sda"{print }'
你可以使用 awk
df | grep sda | awk '{print }'
便携:
df -P /dev/sda1 | awk 'NR==2 {print }'
-P
选项确保 df
将以预期的格式打印输出,特别是不会在设备名称后换行,即使它很长。将设备名称作为参数传递给 df
可以消除解析的任何危险,例如在查询 /dev/sda1
时获取 /dev/sda10
的信息。 df -P
只打印两行,header 行(您忽略)和打印所需列的数据行。
存在 df
显示包含空格的设备名称的风险,例如,如果卷按名称安装且名称包含空格,或者对于其远程安装点包含空格的 NFS 卷。在这种情况下,没有完全可移植的方法来解析 df
的输出。如果您确信 df
会显示您传递给它的确切设备名称(情况并非总是如此),您可以删除它:
df -P -- "$device" | awk -vn=${#device} 'NR==2 {[=11=] = substr([=11=], n+1); print }'
您也可以使用stat
查询磁盘状态。查询挂载在 /
:
stat -f -c '%f' /
要以字节而不是块为单位获取结果,您可以使用 shell 的算法:
echo $((`stat -f -c '%f*%S' /`))
您可以使用 df:
获得确切的字节数df -B1 /
Filesystem 1B-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 32893632512 13080072192 18119061504 42% /
与显示的答案非常相似,但如果您不知道文件系统的名称并且只是在分区上寻找可用的总数 space。
df -P --total | grep 'total' | awk '{print }'