如何仅为 df 的大小、已使用和可用创建变量?

如何仅为 df 的大小、已使用和可用创建变量?

假设我想创建变量,每个变量对应使用 df 时使用的大小、可用的变量。如何为每个变量创建变量?是否有一个选项只返回其中之一?

directorySize=

directoryUsed=

directoryAvailable=

假设我想根据主目录创建这些变量。我该怎么做?

答案1

没有选择只返回一个字段。但是,该选项-P保证所有字段都打印在同一行上(如果没有此选项,如果第一列太宽,则其他字段将移至下一行)。然后,您可以使用 awk 从第二行打印所需的列。

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

要一次设置所有变量,您可以让 awk 打印 shell 片段。

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))

相关内容