![获取 Bash 中当前目录的可用空间](https://linux22.com/image/754/%E8%8E%B7%E5%8F%96%20Bash%20%E4%B8%AD%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E7%9A%84%E5%8F%AF%E7%94%A8%E7%A9%BA%E9%97%B4.png)
我知道df -h
和pwd
,但正则表达式匹配部分似乎有点复杂。有任何想法吗?
答案1
使用该选项可以使输出更容易解析,-P
这将确保:
- 每个文件系统的信息总是打印在一行上;安装设备永远不会单独放在一条线上。这意味着如果安装设备名称的长度超过 20 个字符(例如,对于某些网络安装),则列会错位。
这使得获得可用的可用空间变得更加容易:
$ df -Ph . | tail -1 | awk '{print $4}'
(-h
使用兆字节、千兆字节等单位。如果您的系统没有,则-k
仅使用千字节。)
如果我们传递df
一个路径,它只会返回 2 行:标题行,然后是有关包含该路径的文件系统的数据。我们可以使用 tail 只抓取第二行。我们知道可用空间位于第四列,因此我们使用 来获取该空间awk
。这一切都可以通过以下方式完成awk
:
$ df -Ph . | awk 'NR==2 {print $4}'
或许多其他组过滤器。
答案2
怎么样做呢df -h .
。这将为您提供当前工作目录所在分区的可用空间。
一个小例子:
/usr/local/nagios/libexec # df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-lvol1
9.9G 6.1G 3.4G 65% /
答案3
以字节为单位:
df --output=avail -B 1 "$PWD" | tail -n 1
人类可读:
df --output=avail -h "$PWD" | tail -n 1
或者
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
或者
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
答案4
你可以简单地像这样做:
df -h $PWD | awk 'NR==2{print $4}'
命令解释:
df
:(disk free)是一个标准 Unix 命令,用于显示调用用户具有适当读取访问权限的文件系统的可用磁盘空间量。
-h
:以人类可读的格式显示输出,即兆字节、千兆字节等。
$PWD
:调用当前目录下的命令。
|
:将最左边命令的输出传递给最右边命令。
awk
: 是一个实用程序,使程序员能够扫描每个输入文件,查找与 prog 或指定为 -f file 的一个或多个文件中按字面指定的一组模式中的任何一个匹配的行。
'NR==2
:获取包含空格数值的第二行,而不是标题-NR==1-。
'{print $4}':获取包含可用空间的第四列。