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

Оставьте комментарий