欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: 暗无天日

像 lsdfdu 这类呼吁都带有一个选项可以将数字直接转换成人类容易阅读的形式来揭示。 好比,直接执行 df 时,容量显示的是几多个块,昆山软件开发,而当用 df -h 时,容量会按照块的数量转换成G/M/K的形式。

[lujun9972@T520 ~]$ df
文件系统          1K-块     已用     可用 已用% 挂载点
dev             1900280        0  1900280    0% /dev
run             1906932      868  1906064    1% /run
/dev/sda2      41022688 23631300 15277852   61% /
tmpfs           1906932    26204  1880728    2% /dev/shm
tmpfs           1906932        0  1906932    0% /sys/fs/cgroup
tmpfs           1906932     5156  1901776    1% /tmp
/dev/sda3      73005440 61682676  7571272   90% /home
tmpfs               100        0      100    0% /var/lib/lxd/shmounts
tmpfs               100        0      100    0% /var/lib/lxd/devlxd
tmpfs            381384        8   381376    1% /run/user/1000
[lujun9972@T520 ~]$ df -h
文件系统        容量  已用  可用 已用% 挂载点
dev             1.9G     0  1.9G    0% /dev
run             1.9G  868K  1.9G    1% /run
/dev/sda2        40G   23G   15G   61% /
tmpfs           1.9G   26M  1.8G    2% /dev/shm
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
tmpfs           1.9G  5.1M  1.9G    1% /tmp
/dev/sda3        70G   59G  7.3G   90% /home
tmpfs           100K     0  100K    0% /var/lib/lxd/shmounts
tmpfs           100K     0  100K    0% /var/lib/lxd/devlxd
tmpfs           373M  8.0K  373M    1% /run/user/1000

不外对付那些没有这类成果的呼吁该怎么办呢?有单独的一个呼吁来实现数字和易读形式之间的转换吗? 谜底是,还真有,这就是 numfmt. 并且 numfmt 是coreutils的一部门,无需另行安装,真是本心。

1000进制照旧1024进制?这是个问题

利用 numfmt 支持两种转换尺度,一种是 1K=1000,1M=1000K…的:

numfmt –to=si 数字
将数字转换成易读名目
numfmt --to=si 100000
100K

numfmt –from=si 易读名目

将易读名目转换成数字

numfmt --from=si 100K
100000

尚有一种是 1K=1024,1M=1024K…的:

numfmt –to=iec 数字
将数字转换成易读名目
numfmt --to=iec 100000
98K

numfmt –from=iec 易读名目

将易读名目转换成数字

numfmt --from=iec 100K
102400

事实上,尚有一种名目是 1Ki=1024,1Mi=1024Ki…的(即在单元后头有个i):

numfmt –to=iec-i 数字
将数字转换成易读名目
numfmt --to=iec-i 100000
98Ki

numfmt –from=iec-i 易读名目

将易读名目转换成数字

numfmt --from=iec-i 100Ki

当将易读名目转换会数字时,可以将名目配置为 auto, 这样 numfmt 会自动判定应该是按1000来转换照旧按1024来转换,其选择的法则为:

- 若名目标单元后头不带 i 则利用1000进制来转换

numfmt --from=auto 100K
100000

- 若名目标单元后头不带 i 则利用1024进制来转换

numfmt --from=auto 100Ki
102400

一次举办多个转换

numfmt 可以或许一次性举办多个转换,只需要在后头摆列数字可能易读名目就行了。

numfmt --to=iec 100000 20000 40000
98K
20K
40K
numfmt  --from=iec 98K 20K 40K
100352
20480
40960

从中你也可以看出,转换的功效其实并不会出格的准确

指定命字的单元

利用 --from-unit 可以指定输入数字的单元,好比:

numfmt --to=si --from-unit K 1000
1.0M

你会发明,输出是 1M 而不是 1K

同理,利用 --to-unit 可以指定输出数字的单元:

numfmt --from=si --to-unit K 1M
1000

可以看到,输出是是 1000 而不是 1000000

指定输出的名目