Если верить статистике MacOS,то топовые приложения которые я использую для работы это Chrome, VS Code, iTerm и VK Teams. При этом в консоли я провожу от часа до трех ежедневно. На самом деле это время больше, потому что часть того что трекается как VS Code тоже является временем работы в консоли, только встроенной в VS Code. Поэтому консоль хочется сделать удобнее и красивее. Особенно этой поздней осенью. Этими красивостями и удобностями и хочется поделиться. И не просто поделится, а что бы с красивыми картинками, некоторые из которых были бы не совсем статичны. Ну или совсем не статичны. Это как кому нравится.
Zsh / Oh My Zsh / powerlevel10k
Zsh / Oh My Zsh / powerlevel10k
Небольшой пример работы этой связки с пояснениями и картинкой
Набираем команду cd и плагин https://github.com/zsh-users/zsh-autosuggestions сразу предлагает нам серым подсказку из истории командной строки (без всяких нажатий Ctrl + r, хочется это особо отметить), жмем стрелочку вправо и enter и переходим в каталог.
Тема понимает что мы в гит бранче выписанной с gitlab и меняет значок на githlab и так же показывает бранчу в которой мы сейчас находимся
Экспортируем конфиг доступа к кластеру k8s и тема начинает справа показывать имя этого кластера. Показало бы еще и namespace если мы были не в default.
Пытаемся посмотреть несуществующий каталог и зеленая галочка справа меняется на крестик на красном поле с цифрой кода выхода программы
Эмулируем долгое выполнение команды через sleep 10 c включенной настройкой command_execution_time в powerlevel10k. После выполнения команды появляется еще одно поле, с песочными часиками, которое показывает время выполнения этой самой команды

Вообще в ~/.p10k.zsh можно очень много всего включить, советую почитать на предмет интересующих опций прямо в нем. Например там можно:
показывать текущее окружение python venv, anaconda, node, ruby, etc
показывать текущий кластер и контекст k8s
показывать текущий профиль AWS / Google Cloud / Azure
показывать ip, место на диске, загрузку cpu, статус батарейки, скорость wifi
и это далеко не полный список
Ripgrep
https://github.com/BurntSushi/ripgrep
Очень очень быстрая замена grep
Игнорит то что указано в .gitignore/.ignore/.rcignore
Может искать только в файлах с нужными расширениями, например yaml -
rg 'something' -tyaml
Полная поддержка Unicode включая emoji. Да, можно искать 🤖
Может искать в gz, bzip2 с ключoм -z
Выведете свой поиск в огромных *.csv.gz утечек на новый уровень :)
TLDR
TLDR (англ. too long; didn't read — слишком длинно, не читал)
Все знают man, странички там подробные, но часто нудные и большие при этом с небольшим количеством примеров. TLDR для таких ленивцев как я, которые не помнят и не хотят помнить все ключи команд наизусть, и которым лень читать длинный man что бы составить нужную последовательность ключей и параметров. TLDR помогает таким ленивцем и остаться, концентрируясь на самых частых примерах. Как пример ls

ngrok
Вот допустим, вам хочется показать кому-то в интернете какую-то локально собранную веб приложуху, допустим работает она на 3456 порту. А вот возится с ее деплоем куда-то что-то вот совсем не хочется. Ибо вы ленивец как и я. И тут спасает ngrok.
brew cask install ngrok
Регаемся на сайте (можно под гитхаб аккаунтом)
Копируем токен с сайта (там прям дана команда которую локально и запускаем)
Запускаем
ngrok http 3456
Получаем в консоле урл типа https://234d-134-397-21-892.eu.ngrok.io зайдя на который увидим то что там работает у вас на 3456 порту локально. Увидим, конечно, не только мы, а все у кого это урл есть.
Можно так же пошарить и директорию со статическими страничками сделанными, например, через https://gohugo.io/. Это не просто, а очень просто. Примерно вот так
ngrok http file:///tmp/username.github.io/public
pbcopy (mac) / xclip (linux)
Позволяет скопировать в буфер обмена все выведенное в консоли без этого нудного возякания мышкой по экрану прямо в консоли через pipe. Например echo -n something | pbcopy
FZF
https://github.com/junegunn/fzf
Чудесный консольный интерактивный поисковик, для zsh есть отдельный плагин для него. Ставим через brew install fzf && /usr/local/opt/fzf/install
, так же устанавливаем плагин, рестартуем zsh и после этого мы можем
запускать fzf прям в каталоге и искать файлы интерактивно, выглядит это вот так

можем искать c помощью fzf в истории шела по Ctrl+r
встраивать такой поиск в pipe, например
git log --pretty=format:"%an <%ae>" | sort | uniq | fzf | pbcopy
EXA
https://the.exa.website/, модная замена ls. Наверняка ls можно законфигурить чтобы он выводил так же красиво, но настоящие ленивцы - автоматизаторы делают brew install exa
и наслаждаются красотой и удобством "из коропки"

BAT
Нет, это не почтовый клиент (а ты старый !). Нет, windows тут совсем не причем :) Это замена cat с примесью more. Ну ладно, уговорили, это замена less. Делаем brew install bat
и красоты становится еще больше. Наверняка вы знает как выглядит работа cat, поэтому показывать ее не буду, дабы не наводить тоску, а вот скриншот bat - c удовольствием

GRC
Все это красиво и хорошо, но хочется больше красоты и там где она не предусмотрена архитектурно. Ну вот например скучный и серый вывод ping. И так осень, а тут еще в него смотри, так и депрессию можно хватануть. Но выход есть ! (но не тот что вы подумали). brew install grc
и вывод ping играет новыми красками

и так можно делать со многим, например grc tail file.log
или grc ip add
. Но не со всем, например grc curl
будет все так же уныл.
HTTPIE
То что grc curl
не работает вы уже в курсе, если все внимательно читали. И, конечно же спасибо тому кто это написал двумя строчками выше. Но это не повод грустить, делай brew install httpie
и снова в консоли веселее чем за окном. Только не пишите мне в коментах что у вас за окном море, солнце и +20. Я вас буду немножечко ненавидеть.

TIG
Ну и напоследок brew install tig
. Удобная тулза чтобы глубоко нырять в удивительный мир git log. Не ныряние в море конечно, но тоже иногда прикольно и познавательно.

Всем добра и автоматизации!