Если верить статистике 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
Не смотрите на название, к цветам Гугла не имеет никакого отношения.