Если верить статистике 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. Не ныряние в море конечно, но тоже иногда прикольно и познавательно.

Всем добра и автоматизации!
Комментарии (17)

baldr
17.11.2022 16:11+1Про exa полтора года назад даже отдельная статья была тут.
В список еще: lnav, bpytop. Ну и еще сейчас накидают вам.

13werwolf13
18.11.2022 08:47+2к упоминанию bpytop не могу не добавить ещё bashtop и btop. все три тулзы это по большому счёту одна и та же тулза реализованная на разных ЯП.
bashtop - bash
bpytop - python
btop - C++называется "угадай кто самый шустрый"

Tinkz
17.11.2022 19:08статья про консоль мака и без warp?

sergeygals Автор
17.11.2022 20:19Ну не совсем это про мак, просто писалась на маке, на десктопе у меня gentoo и там все выше описанное работает точно так же. Но за наводку спасибо, тулза интересная, даже что-то не слышал про нее, уже изучаю

DeniSix
18.11.2022 09:36+3Нормальные пацаны не пользуются терминалами с обязательным аккаунтом и телеметрией.

sergeygals Автор
18.11.2022 09:48да, шняга красивая, но шибко подозрительная, список телеметрии огромный https://docs.warp.dev/getting-started/privacy, еще и https://docs.warp.dev/features/entry/ai-command-search есть. и всему этому приходится верить на слово потому что исходники закрыты

Boti4ello
17.11.2022 21:24+1Как аналог EXA можно использовать tree - древовидно и красиво. А если с параметрами - то и размеры директорий и прочие плюшки...
По мне zsh и Oh My Zsh уже вполне достаточно. Пользуюсь темой rkj-repos
Нашел для себя несколько команд, спасибо!
Имхо.

ogost
18.11.2022 03:40+1Для wayland есть wl-clipboard, в состав которого входят wl-copy и wl-paste.
У oh-my-zsh есть замечательный плагин git, который, по всей видимости, у автора на скрине, и который содержит замечательные алиасы типа glola glols и многие другие.

ahdenchik
18.11.2022 11:37Часики и прочие прибамбасы в строке консоли справа плохи тем, что не позволяют корректно скопипастить инфу из окна консоли куда-нибудь (в багтрекер или типа того)

DeniSix
18.11.2022 16:01+1Все промпты умеют в т.н. Transient prompt. Вот, например, из ридми powerlevel10k.

Хотя я, наверное, погорячился и не все так умеют :)

sergeygals Автор
18.11.2022 16:20тут несколько моментов.
есть то что упомянул @DeniSix
# Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt # when accepting a command line. Supported values: # # - off: Don't change prompt when accepting a command line. # - always: Trim down prompt when accepting a command line. # - same-dir: Trim down prompt when accepting a command line unless this is the first command # typed after changing current working directory.мне достаточно редко приходится копировать вывод нескольких команд, пару строк крокозябр удалить не трудно, приглашение двухстрочное, целится в часть строки что бы оставить только команду не надо, да и остается -> в начале строки , видно что выполнялось.
Довольно часто смотрю в историю чтобы узнать сколько команда времени заняла и когда она выполнялась
Если надо сделать скриншот (иногда такое можно и нужно) то с метками тоже красивее и нагляднее :)

garwall
18.11.2022 13:26пробовал подобное, и не раз, но потом все равно откатывался на баш и стандартные утилиты - потому что есть везде, и достаточно натюнить под себя .bashrc с нужными алиасами, и все будет работать везде из коробки, а не требовать установки всяких тулз, которые не факт что в репозиториях есть, или тащат какой-нибудь жирный рантайм за собой. ну кроме tig - им самим пользуюсь, удобно.

anka007
18.11.2022 14:02Это возраст. Желание "попробовать новое" все чаще проигрывает желанию "быстро сделать так, чтобы работало". И сразу хорошо, чтобы потом не возвращаться переделывать.

qrick
18.11.2022 17:08Скажите, это оно у вас в реальном времени с такими задержками работает как на первой гифке?
anka007
О мои глаза! Недавно была статья про сложности дизайна темных тем. Кажется, многие разработчики этих сложностей не заметили и просто взяли "Вот этот код фон/цвет еще не использовался? Отлично, подойдет"
Хотя среди приведенных примеров есть нормальные цветовые решения, где цвет помогает, а не мешает. Или это просто удачный кадр?
asergrisa
Я тоже долго бесился от цветов от которых текут глаза. Пока не сел и не составил свою тему, в которой все цвета проверены на нормальную контрастность. После этого стало нормально. На скриншотах не так красиво, но зато глазам приятно.
https://github.com/zpm-zsh/material-colors/blob/master/SuperMaterial.json
Не смотрите на название, к цветам Гугла не имеет никакого отношения.