Утилита jc (JSON Convert) предназначена для конвертирования выходных данных многих консольных команд в json формат.
Об утилите
Данная утилита представлена на github.com. Она может пригодиться при создании скриптов, когда вывод команд будет передаваться другим системам, которые умеют принимать и обрабатывать json. Ниже, на практике покажу как это работает.
Практика
Установить данный инструмент в Ubuntu и Debian можно с помощью apt и стандартных репозиториев:
$ apt install jc
Но в репозиториях находится достаточно старая версия.
Лучше установить с помощью pip:
$ pip3 install jc
При установки с помощью pip данная утилита будет располагаться в каталоге ~/.local/bin/:
$ ls -l /home/alex/.local/bin/jc -rwxr-xr-x 1 alex alex 205 сен 11 10:10 /home/alex/.local/bin/jc
Я данный каталог поместил в переменную PATH для своего пользователя:
$ nano ~/.profile
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
И применил настройки:
$ . ~/.profile
Теперь покажу как это работает на примерах. Начнём с утилиты ls, для вывода содержимого каталога:
$ ls
debian.txt storage test test.txt
$ ls | jc --ls -p
[
{
"filename": "debian.txt"
},
{
"filename": "storage"
},
{
"filename": "test"
},
{
"filename": "test.txt"
}
]
С помощью опции --ls я говорю утилите, что нужно обработать вывод команды ls.
Подобные опции доступны для множества утилит, например: df, dmidecode, du, find, free, id, iostat, ip-address, ip-route, lsblk, ps, ss и многих других. Посмотреть какие ещё опции и для каких утилит можно выполнив команду:
$ jc -h
Также удобно использовать опцию -p, чтобы вывод был более красивым. По умолчанию же всё выводится в одну строку.
Вот ещё один пример с утилитой ps. Здесь нужно выставить системную локаль = c, так как с русским языком утилита jc не справится:
$ env LANGUAGE=с df -h
Filesystem Size Used Avail Use% Mounted on
udev 472M 0 472M 0% /dev
tmpfs 98M 508K 98M 1% /run
/dev/sda1 15G 3,9G 11G 28% /
$ env LANGUAGE=с df -h | jc --df -p
[
{
"filesystem": "udev",
"size": "472M",
"used": 0,
"mounted_on": "/dev",
"available": 472,
"use_percent": 0
},
{
"filesystem": "tmpfs",
"size": "98M",
"used": 508,
"mounted_on": "/run",
"available": 98,
"use_percent": 1
},
{
"filesystem": "/dev/sda1",
"size": "15G",
"used": 39,
"mounted_on": "/",
"available": 11,
"use_percent": 28
}
]
Другие статьи по интересным утилитам для Linux можете посмотреть здесь.