Утилита jc

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



2023-09-11T14:56:56
Утилиты Linux