Если верить статистике MacOS,то топовые приложения которые я использую для работы это Chrome, VS Code, iTerm и VK Teams. При этом в консоли я провожу от часа до трех ежедневно. На самом деле это время больше, потому что часть того что трекается как VS Code тоже является временем работы в консоли, только встроенной в VS Code. Поэтому консоль хочется сделать удобнее и красивее. Особенно этой поздней осенью. Этими красивостями и удобностями и хочется поделиться. И не просто поделится, а что бы с красивыми картинками, некоторые из которых были бы не совсем статичны. Ну или совсем не статичны. Это как кому нравится.

Zsh / Oh My Zsh / powerlevel10k

Zsh / Oh My Zsh / powerlevel10k

Небольшой пример работы этой связки с пояснениями и картинкой

  1. Набираем команду cd и плагин https://github.com/zsh-users/zsh-autosuggestions сразу предлагает нам серым подсказку из истории командной строки (без всяких нажатий Ctrl + r, хочется это особо отметить), жмем стрелочку вправо и enter и переходим в каталог.

  2. Тема понимает что мы в гит бранче выписанной с gitlab и меняет значок на githlab и так же показывает бранчу в которой мы сейчас находимся

  3. Экспортируем конфиг доступа к кластеру k8s и тема начинает справа показывать имя этого кластера. Показало бы еще и namespace если мы были не в default.

  4. Пытаемся посмотреть несуществующий каталог и зеленая галочка справа меняется на крестик на красном поле с цифрой кода выхода программы

  5. Эмулируем долгое выполнение команды через 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

https://ngrok.com/

Вот допустим, вам хочется показать кому-то в интернете какую-то локально собранную веб приложуху, допустим работает она на 3456 порту. А вот возится с ее деплоем куда-то что-то вот совсем не хочется. Ибо вы ленивец как и я. И тут спасает ngrok.

  1. brew cask install ngrok

  2. Регаемся на сайте (можно под гитхаб аккаунтом)

  3. Копируем токен с сайта (там прям дана команда которую локально и запускаем)

  4. Запускаем ngrok http 3456

  5. Получаем в консоле урл типа https://234d-134-397-21-892.eu.ngrok.io зайдя на который увидим то что там работает у вас на 3456 порту локально. Увидим, конечно, не только мы, а все у кого это урл есть.

  6. Можно так же пошарить и директорию со статическими страничками сделанными, например, через 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)


  1. anka007
    17.11.2022 16:10
    +2

    О мои глаза! Недавно была статья про сложности дизайна темных тем. Кажется, многие разработчики этих сложностей не заметили и просто взяли "Вот этот код фон/цвет еще не использовался? Отлично, подойдет"

    Хотя среди приведенных примеров есть нормальные цветовые решения, где цвет помогает, а не мешает. Или это просто удачный кадр?


    1. asergrisa
      18.11.2022 00:56
      +1

      Я тоже долго бесился от цветов от которых текут глаза. Пока не сел и не составил свою тему, в которой все цвета проверены на нормальную контрастность. После этого стало нормально. На скриншотах не так красиво, но зато глазам приятно.

      https://github.com/zpm-zsh/material-colors/blob/master/SuperMaterial.json

      Не смотрите на название, к цветам Гугла не имеет никакого отношения.


  1. baldr
    17.11.2022 16:11
    +1

    Про exa полтора года назад даже отдельная статья была тут.

    В список еще: lnav, bpytop. Ну и еще сейчас накидают вам.


    1. 13werwolf13
      18.11.2022 08:47
      +2

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

      называется "угадай кто самый шустрый"


  1. Tinkz
    17.11.2022 19:08

    статья про консоль мака и без warp?


    1. sergeygals Автор
      17.11.2022 20:19

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


    1. DeniSix
      18.11.2022 09:36
      +3

      Нормальные пацаны не пользуются терминалами с обязательным аккаунтом и телеметрией.


      1. sergeygals Автор
        18.11.2022 09:48

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


  1. Boti4ello
    17.11.2022 21:24
    +1

    Как аналог EXA можно использовать tree - древовидно и красиво. А если с параметрами - то и размеры директорий и прочие плюшки...

    По мне zsh и Oh My Zsh уже вполне достаточно. Пользуюсь темой rkj-repos

    Нашел для себя несколько команд, спасибо!

    Имхо.


  1. ogost
    18.11.2022 03:40
    +1

    Для wayland есть wl-clipboard, в состав которого входят wl-copy и wl-paste.

    У oh-my-zsh есть замечательный плагин git, который, по всей видимости, у автора на скрине, и который содержит замечательные алиасы типа glola glols и многие другие.


  1. DeniSix
    18.11.2022 10:24
    +1

    powerlevel10k

    Мне понравился Starship, но у меня в требованиях работа в разношёрстных шеллах (zsh, bash, powershell, nushell) и моя лень (конфиг не трогал вообще).


  1. ahdenchik
    18.11.2022 11:37

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


    1. DeniSix
      18.11.2022 16:01
      +1

      Все промпты умеют в т.н. Transient prompt. Вот, например, из ридми powerlevel10k.


      image


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


    1. sergeygals Автор
      18.11.2022 16:20

      тут несколько моментов.

      1. есть то что упомянул @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.
      1. мне достаточно редко приходится копировать вывод нескольких команд, пару строк крокозябр удалить не трудно, приглашение двухстрочное, целится в часть строки что бы оставить только команду не надо, да и остается -> в начале строки , видно что выполнялось.

      2. Довольно часто смотрю в историю чтобы узнать сколько команда времени заняла и когда она выполнялась

      3. Если надо сделать скриншот (иногда такое можно и нужно) то с метками тоже красивее и нагляднее :)


  1. garwall
    18.11.2022 13:26

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


    1. anka007
      18.11.2022 14:02

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


  1. qrick
    18.11.2022 17:08

    Скажите, это оно у вас в реальном времени с такими задержками работает как на первой гифке?