🐧 Как красиво выводить десятичные или двоичные числа на Linux / Unix

by itisgood

Используйте утилиту командной строки numfmt, которая является частью стандартных GNU Core Utilities, для удобного вывода десятичных или двоичных чисел.

Красивый вывод двоичного числа:

$ echo 2K | numfmt --from=iec
2048

Красивый вывод десятичного числа:

$ echo 2K | numfmt --from=si
2000

Красивый вывод двоичного числа, используя байты и ГБ.

$ numfmt --from=iec 1G
1073741824
$ numfmt --from=iec --to=iec 1073741824
1.0G

Красивый вывод количества открытых файлов:

$ lsof | wc -l
207759
$ lsof | wc -l | numfmt --to=si
207K

Вывод использования памяти для конкретного процесса.

$ sudo pmap 7365 | tail -1
 total           226396K
$ sudo pmap 7365 | tail -1 | numfmt --from=iec --field=2 --to=iec
 total              222M

Красивый вывод размеров файлов с использованием определенных отступов:

$ du --summarize --apparent-size --human  *
3,0K    haproxy.cfg
1,1G    disk.vdi
384     stats-config.lua
21K     stats.lua
6,3K    stats.sh
$ du --summarize --apparent-size --bytes  * | numfmt --to=iec --padding=-7
3,0K    haproxy.cfg
1,1G    disk.vdi
384     stats-config.lua
21K     stats.lua
6,3K    stats.sh

Вывод доступного места на диске, заменив определенные поля.

$ df -h
Filesystem                      Type      Size  Used Avail Use% Mounted on
tank/lxd/containers/development zfs       791G  1.2G  790G   1% /
none                            tmpfs     492K     0  492K   0% /dev
udev                            devtmpfs   16G     0   16G   0% /dev/fuse
tmpfs                           tmpfs     100K     0  100K   0% /dev/lxd
tmpfs                           tmpfs     100K     0  100K   0% /dev/.lxd-mounts
tmpfs                           tmpfs      16G     0   16G   0% /dev/shm
tmpfs                           tmpfs      16G  132K   16G   1% /run
tmpfs                           tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                           tmpfs      16G     0   16G   0% /sys/fs/cgroup
tmpfs                           tmpfs     3.2G     0  3.2G   0% /run/user/1983
$ df -BK
Filesystem                      Type      1K-blocks     Used  Available Use% Mounted on
tank/lxd/containers/development zfs      829321984K 1212416K 828109568K   1% /
none                            tmpfs          492K       0K       492K   0% /dev
udev                            devtmpfs  16439564K       0K  16439564K   0% /dev/fuse
tmpfs                           tmpfs          100K       0K       100K   0% /dev/lxd
tmpfs                           tmpfs          100K       0K       100K   0% /dev/.lxd-mounts
tmpfs                           tmpfs     16456228K       0K  16456228K   0% /dev/shm
tmpfs                           tmpfs     16456228K     132K  16456096K   1% /run
tmpfs                           tmpfs         5120K       0K      5120K   0% /run/lock
tmpfs                           tmpfs     16456228K       0K  16456228K   0% /sys/fs/cgroup
tmpfs                           tmpfs      3291244K       0K   3291244K   0% /run/user/1983
$ df -BK | numfmt --header --from=iec --field 3-5 --header=1 --to=iec
Filesystem                      Type      1K-blocks     Used  Available Use% Mounted on
tank/lxd/containers/development zfs            791G     1.2G       790G   1% /
none                            tmpfs          492K        0       492K   0% /dev
udev                            devtmpfs        16G        0        16G   0% /dev/fuse
tmpfs                           tmpfs          100K        0       100K   0% /dev/lxd
tmpfs                           tmpfs          100K        0       100K   0% /dev/.lxd-mounts
tmpfs                           tmpfs           16G        0        16G   0% /dev/shm
tmpfs                           tmpfs           16G     132K        16G   1% /run
tmpfs                           tmpfs          5.0M        0       5.0M   0% /run/lock
tmpfs                           tmpfs           16G        0        16G   0% /sys/fs/cgroup
tmpfs                           tmpfs          3.2G        0       3.2G   0% /run/user/1983

Как вывести количество блоков, используя указанный размер:

$ numfmt --from=iec --to=iec --to-unit=4096 8192M
2.0M
$ numfmt --from=iec --to=iec --from-unit=4Ki --format="%.2f" 12
48.00K
$ numfmt --from=iec --to=iec --from-unit=512 --format="%.2f" 3
1.50K
Вывести реальный объем жесткого диска 256 ГБ:
$ numfmt --from=si --to=iec --format="%.1f" 256G
238.5G

Вывести реальный объем жесткого диска 1 ТБ:

$ numfmt --from=si --to=iec --format="%.1f" 1T
931.4G

 

You may also like

Leave a Comment