Утилита 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 можете посмотреть здесь.