Полезные консольные команды bash. 

Удобный просмотр JSON в bash (jid)

При помощи jid можно быстро, удобно, с подсказками и автодополнением ходить по структуре JSON-файлов.  Ссылка на github

# apt-get install jid

То есть при наличии json вида:

{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}}

Получаем автодополнение и навигацию вида:

jid.png

Консольный клиент PostgreSQL - pgcli

# apt-get install pgcli
$ pip install pgcli  # или так

Умеет делать автодополнение и подсветку синтаксиса. Однозначный must have. Ну и то же самое, только для MySQL: тык.

pgcli

Подсветки

ccze

Быстрая подсветка логов написанная на c. Исходники на github.

# apt-get install ccze
ccze

ccze, запущенная без флага -A зачем-то выполняет очистку stdout. 

jq

Делает pretty print, подсветку синтаксиса json, позволяет гулять по ключам JSON'а и не только. В общем, является аналогом sed для JSON. jq написана на сях и не имеет каких-либо внешних зависимостей, так что её бинарник можно спокойно таскать куда угодно.

# apt-get install jq
$ cat glossary.json | jq
jq - консольная утилита для подсветки синтаксиса json-файлов
# из JSON-семпла выше
$ cat glossary.json | jq '.widget.window.title'
"Sample Konfabulator Widget"

Продвинутый top - glances

Glances - это htop-образная утилита мониторинга, цель которой предоставить максимум информации на минимальном пространстве. Использует curses. Поддерживает web-интерфейс, - может быть запущена в клиент-серверном режиме. Автоматически подгоняет количество выдаваемой информации под фактический размер консоли. Исходники на github. 

# apt-get install glances
glances.png

The F@ck

Утилита пытается автоматически исправлять противные ошибки в командах, опечатки, неточности, и всё в этом духе. Исходники на github.

thefuck.gif

Установка в Debian Stretch:

# apt-get install thefuck python-pkg-resources

Убедимся, что ~/.bash_aliases выполняется ~/.bashrc, и в ~/.bash_aliases добавим альясы thefuck:

# cat ~/.bashrc | grep bash_aliases
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
# editor ~/.bash_aliases
eval $(thefuck --alias)
alias fuckit='export THEFUCK_REQUIRE_CONFIRMATION=False; fuck; export THEFUCK_REQUIRE_CONFIRMATION=True'

Нужно или перезайти в сессию, или . ~/.bash_aliases.

Autojump

Анализирует наиболее часто используемые команды навигации по файловой системе и позволяет совершать быстрые переходы. 

Исходники проекта на github. Пример:

[15:41:48] user@haterelay:/usr/src/vapoursynth$ 
[15:43:24] user@haterelay:/usr/src/vapoursynth$ cd /var/log/lightdm/
[15:43:31] user@haterelay:/var/log/lightdm$ cd ~
[15:43:32] user@haterelay:~$ j dm
/var/log/lightdm
[15:43:42] user@haterelay:/var/log/lightdm$

Позволяет быстро открывать системный файл-браузер:

jo dm

Установка:

# apt-get install autojump
# editor ~/.bash_aliases
. /usr/share/autojump/autojump.sh

Z

Bash-скрипт, который так же как и autojump занимается интерпретированием сокращённых команд cd для быстрой навигации по каталогам. Проект на github. Пример:

$ cd /var/www/mayan/
$ cd /var/www/mayan/mayan-edms/
$ cd /var/www/mayan/mayan-edms/mayan/
$ cd /var/www/mayan/mayan-edms/mayan/settings/
$ cd ~
$ z ma ma se
user@haterelay:/var/www/mayan/mayan-edms/mayan/settings$

Установка (+ . ~/.bash_aliases, или перезайти):

# cd /usr/src/
# git clone https://github.com/rupa/z
# echo -e '\n. /usr/src/z/z.sh\n' >> ~/.bash_aliases
!

Похоже, что Z не умеет дружить с autoenv, а вот с autojump с ним дружит.

Autoenv

Если в директории лежит .env, то при переходе в него autoenv автоматически выполняет его. Может быть использовано для:

  • автоматической активации virtualenv
  • установки переменных среды для проекта
  • зарабатывания миллионов (c)

Проект на github. Пример:

$ echo -e 'source ../../bin/activate\n' >> /var/www/example.com/example-project/example/.env
$ cd /var/www/example.com/example-project/example/
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /var/www/example.com/example-project/example/.env:
autoenv:
autoenv:     --- (begin contents) ---------------------------------------
autoenv:     source ../../bin/activate
autoenv:
autoenv:     --- (end contents) -----------------------------------------
autoenv:
autoenv: Are you sure you want to allow this? (y/N)y
(example) [20:02:46] user@haterelay:/var/www/example.com/example-project/example$

Установка:

# pip install autoenv
# echo -e '\nsource /usr/local/bin/activate.sh\n' >> ~/.bash_aliases
Хинт

На момент написания версия в pip устарела (вернее там какая-то муть с версиями) — в ней нет поддержки переменной окружения AUTOENV_CUR_DIR, в которую записывается абсолютный путь до .env.  Без этого неудобно писать source ../bin/activate. Поэтому предпочтительней брать версию с гитхаба. 

fzf

Он же command-line fuzzy finder. Облегчает жизнь тем, что добавляет к шеллу автодополнение в виде выпадающего меню. Исходники на github.

Умеет:

  • по Ctrl+T вставляет выбранный из меню путь
  • по Ctrl+R вставляет выбранную из истории команду
  • по Alt+C переходит в выбранную директорию

fzf.png

Установка:

$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
$ ~/.fzf/install

Liquid Prompt

lp.png

Показывает удобный и красивый prompt для bash/zsh. Информация отображается тогда, когда она действительно необходима. Умеет показывать в зависимости от обстоятельств многое. Вот краткий список умений:

  • метка текущего сеанса шелла (можно легко добавить любую метку (префикс), вызвав liquidprompt_tag TAGNAME);

  • текущее время: отображается либо как числовое значение, либо, как аналоговые часы;

  • текущее состояние батареи:

    • зеленый ⏚, если батарея заряжается, уровень заряда выше порогового значения, но батарея не заряжена полностью;

    • желтый ⏚, если батарея заряжается, но уровень заряда ниже порогового значения;

    • желтый ⌁, если батарея разряжается, но уровень заряда выше порогового значения;

    • красный ⌁, если батарея разряжается и уровень заряда батареи ниже порогового значения

    • если оставшийся заряд батареи ниже заданного порогового значения, символ отрисовывается красным; яркость цвета зависит от уровня разряда;

  • средняя загрузка процессора, отображаемая при превышении порогового значения; сильнее загрузка - ярче цвет;

  • средняя температура снимаемая с доступных датчиков системы (обычно температура процессора и материнской платы);

  • количество отсоединённых сессий (screen или tmux);

  • количество спящих задач (при прерывании команды с помощью Ctrl-Z)

  • количество присоединённых задач (команд, запущенных с &);

  • пара квадратных скобок: синяя, если запущен terminal multiplexer (screen или tmux);

  • текущий пользователь, отрисовывается жирным желтым, если это root, и светлым белым, если текущий пользователь - не тот же, что и залогиненный;

  • зеленый @, если у подключения есть поддержка X11; желтый, если поддержки нет;

  • текущий хост: отрисовывается красным жирным, если вы подключены через telnet и синим (или другим уникальным цветом) при подключении по SSH;

  • зеленая колонка, если у пользователя есть права записи в текущей директории, и красный если прав нет;

  • текущая директория в жирном начертании, сокращённая, если она занимает слишком много места; при этом всегда сохраняется первые два названия директорий;

  • текущий Python virtualenv;

  • стрелка вверх, если используется http-прокси;

  • название текущей ветки, если вы находитесь в репозитарии (Git, Mercurial, Subversion, Bazaar, или Fossil):

    • зелёное, если изменений нет;

    • красное, если изменения есть;

    • жёлтое, если есть незапушенные коммиты;

    • количество добавленных/удаленных строк, если были внесены изменения и количество ожидающих коммитов;

    • желтое + если есть изменения в stash;

    • жёлтое * если есть неотслеживаемые файлы в репозитории;

  • время выполнения последней команды, если она выше определенного порога;

  • код возврата последней команды, если она зафейлилась;

  • отметка в конце строки:

    • ± для Git;

    • ☿ для Mercurial;

    • ‡ для Subversion;

    • ‡± для Git-Subversion;

    • ⌘ для Fossil;

    • $, или % для обычного пользователя: красный, если есть права sudo;

    • и красная решётка # если пользователь — root;

  • по желанию prompt будет скопирован в title окна терминала (без цветов)

Исходники на github.

Установка

# apt-get install liquidprompt
# liquidprompt_activate

Asciinema

Позволяет записывать происходящее в bash-сессии в json и расшаривать это. 

Сайт, плеер на github. Статейка-заметка как это засунуть в wagtail. Установка в debian stretch:

# apt-get install asciinema

Запуск записи:

$ asciinema rec /tmp/out.json

Так выглядит встроенный плеер:

Goaccess

Реалтайм анализатор логов. Официальный сайт, github.

Goaccess
# официальные пакеты
apt-get install goaccess

# или по-свежее
echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install goaccess
night-crawler
Просмотров: 327
blog comments powered by Disqus