Вы когда-нибудь задумывались, сколько времени уходит на переключение между окнами, клики мышью и поиск нужной кнопки в GUI? В мире, где каждая секунда на счету, терминал остается самым мощным и недооцененным инструментом разработчика. Но стандартного набора команд часто недостаточно.

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

Если вам интересен процесс и вы хотите следить за дальнейшими материалами, буду признателен за подписку на мой телеграм-канал. Там я публикую полезныe материалы по разработке, разборы сложных концепций, советы как быть продуктивным и конечно же отборные мемы.

1. lazygit

Вспомните свои ощущения, когда нужно сделать интерактивный rebase для десятка коммитов. Или когда вы случайно закоммитили отладочный console.log и теперь нужно его убрать из предыдущего коммита. Git - невероятно мощный, но его стандартный интерфейс в командной строке заставляет постоянно держать в голове сложные команды и флаги, а цена ошибки высока.

Так вот lazygit - это терминальный псевдографический интерфейс (TUI) для Git, который превращает сложные операции в простые и интуитивно понятные действия. Он дает вам всю мощь Git, но с наглядностью GUI, не заставляя покидать уютный терминал.

Глубокое погружение в возможности:

  • Атомарные коммиты без усилий: Это главная фишка. Вы открываете lazygit, видите список измененных файлов. Заходите в файл и видите дифф. Вместо того чтобы делать git add ., вы можете построчно или поблочно добавлять изменения в стейджинг, нажимая пробел. Это позволяет создавать идеально чистые, логически разделенные коммиты, которые легко читать и ревьюить.

  • Безболезненный интерактивный rebase: Забудьте про git rebase -i HEAD~5 и редактирование текстового файла. В lazygit вы видите список коммитов. Хотите объединить два коммита? Пожалуйста. Хотите переименовать? Да без проблем. Это превращает страшную процедуру в простое и наглядное редактирование списка.

  • Визуализация веток и истории: lazygit наглядно показывает граф веток. Вы всегда видите, какая ветка от какой отходит, где находится HEAD, и какие коммиты еще не отправлены на удаленный сервер. Cherry-pick коммита из другой ветки - это просто выбор коммита и нажатие кнопки.

  • Быстрое разрешение конфликтов: При возникновении конфликта слияния lazygit предлагает вам удобный интерфейс, где вы можете выбрать, какой из конфликтующих блоков кода оставить, нажатием одной клавиши.

Первые 15 минут вы будете привыкать к горячим клавишам (хотя они все подписаны). Начните с простого: стейджинг и коммиты. Уже через день вы не сможете представить, как жили без этого раньше.

Установка:

Инструкции для всех ОС и подробная документация есть на официальном репозитории GitHub.

2. tmux

Вы подключились по SSH к удаленному серверу и запустили долгий процесс сборки или миграции данных. Интернет моргнул, соединение оборвалось - процесс прерван. Или локально: у вас открыто 5 вкладок терминала - бэкенд, фронтенд, тесты, Docker, база данных. Перезагрузка компьютера или случайное закрытие окна - и всю эту сложную конструкцию нужно восстанавливать с нуля.

Решение: tmux (Terminal Multiplexer) — это ваш персональный менеджер рабочих сессий в терминале. Он создает слой между вами и запущенными процессами, позволяя им жить своей жизнью, даже когда вы отключаетесь.

Глубокое погружение в возможности:

  • Сессии - ключ ко всему: Главное понятие в tmux -это сессия. Вы запускаете и попадаете в новую сессию. Внутри нее вы можете создавать окна и панели. Самое важное: вы можете отсоединиться от сессии. Терминал закроется, но сессия со всеми запущенными в ней процессами продолжит работать в фоне. Позже вы можете вернуться, набрав команду, и все будет в том же состоянии, в котором вы его оставили.

  • Идеальная организация рабочего пространства:

    • Окна: Это как вкладки в браузере. Внутри одной сессии вы можете создать несколько окон для разных контекстов (например, Сервер, Базы данных, Мониторинг).

    • Панели: Каждое окно можно разделить на несколько независимых панелей. Все в одном окне, без переключений.

  • Парное программирование: Два разработчика могут подключиться по SSH к одному серверу и присоединиться к одной и той же сессии tmux. Они будут видеть один и тот же экран и смогут по очереди вводить команды, что идеально подходит для совместной отладки или обучения.

С чего начать: tmux имеет небольшой порог вхождения из-за своей системы команд через префикс. Первым делом научитесь создавать сессии, отсоединяться и присоединяться. Затем освойте создание окон и панелей.

Установка:
Больше информации можно найти в документации на GitHub Wiki.

3. fzf

Стандартный поиск по истории команд (Ctrl+R) ищет только точные совпадения. Поиск файлов через find или ls -R | grep - громоздко и медленно. Мы тратим ценные секунды (которые складываются в часы) на то, чтобы вспомнить точное название файла или команды.

fzf (Fuzzy Finder) — это универсальный интерактивный фильтр с нечетким поиском. Вы просто начинаете набирать символы, которые помните, и fzf мгновенно отфильтровывает список, показывая наиболее релевантные результаты.

Глубокое погружение в возможности:

  • Интеграция из коробки: После установки fzf обогащает вашу командную строку:

    • Ctrl+R: Вместо стандартного поиска появляется интерактивный список истории команд.

    • Ctrl+T: Открывает поиск файлов и директорий в текущей папке. Выбранный путь подставляется в команду.

    • Alt+C: Ищет директории и мгновенно переходит в выбранную.

  • Сила конвейера (Pipes): Настоящая магия fzf раскрывается, когда вы используете его с другими командами. Он принимает на вход список строк и позволяет интерактивно выбрать одну из них.

    • Интерактивное переключение веток Git:

      git branch | fzf | xargs git checkout

      Эта команда сначала получает список всех веток, передает его в fzf для выбора, а затем xargs подставляет выбранное имя в команду git checkout.

    • Выбор и убийство процесса:

      ps -ef | fzf | awk '{print $2}' | xargs kill -9
      
  • Предпросмотр: fzf можно настроить так, чтобы справа от списка результатов отображалось окно предпросмотра. Для файлов это будет их содержимое, для коммитов — полный дифф. Это позволяет найти нужное, даже не открывая файл.

С чего начать: Просто установите fzf и запустите скрипт интеграции, который он предложит. Начните использовать Ctrl+R и Ctrl+T в повседневной работе. Когда это войдет в привычку, попробуйте создать свой первый пайплайн, например, с git branch.

Установка:
Инструкции и продвинутые настройки доступны в официальном репозитории.

4. qwen-cli

Вы пишете сложный bash-скрипт и забыли синтаксис. Или вам нужно набросать Dockerfile, но вы не помните всех директив. Или вы видите непонятную ошибку и хотите быстро получить объяснение. Каждый такой случай - это переключение в браузер, запрос к чату гпт или поиск в браузере, что влечет за собой потерю концентрации.

qwen-cli - это официальный CLI-инструмент для взаимодействия с мощными языковыми моделями семейства Qwen от Alibaba. Он позволяет вам задавать вопросы, генерировать код, объяснять команды и многое другое прямо из терминала, используя всю мощь облачной модели.

Глубокое погружение в возможности:

  • Генерация команд и скриптов: Это самый частый кейс. Вместо того чтобы гуглить, вы просто спрашиваете.

  • Модель выдаст готовую команду.

  • Объяснение кода и команд: Вы можете передать содержимое файла или вывод другой команды для анализа

  • Быстрое прототипирование: Вам нужно написать небольшой сервер на для проверки гипотезы. Вместо того чтобы создавать файлы и писать boilerplate, вы просите и сразу используете без копирования.

С чего начать: Использование qwen-cli требует получения API-ключа. Это бесплатно для стартового объема запросов.

  1. Получите API-ключ: Зарегистрируйтесь на платформе Alibaba Cloud DashScope и создайте API-ключ.

  2. Сохраните ключ: Самый безопасный способ - добавить ключ в переменные окружения. Добавьте строку в ваш файл конфигурации оболочки. Но вы так же можете сделать это и через интерфейс.

Официальный репозиторий: https://github.com/QwenLM/qwen-code

5. ripgrep (rg)

grep - это классика, но в современных проектах он невыносимо медленный. Он пытается искать в гигабайтах зависимостей в node_modules, в бинарных файлах и в логах, заваливая вас мусором.

ripgrep (rg) — это современная реинкарнация grep, написанная на Rust. Он создавался специально для поиска по кодовым базам. Неудивительно, что именно ripgrep является движком поиска по умолчанию в VS Code.

Глубокое погружение в возможности:

  • Скорость и интеллект по умолчанию: rg по умолчанию рекурсивен. Он автоматически игнорирует все, что указано в вашем .gitignore, а также скрытые файлы и бинарники. Благодаря этому и многопоточной архитектуре, он работает на порядок быстрее grep.

  • Продвинутая фильтрация: Вы можете легко управлять областью поиска:

    • Искать только в файлах определенного типа

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

    • Искать в файлах, которые не отслеживаются Git

  • Удобный вывод: rg красиво подсвечивает найденные совпадения, указывает номера строк и группирует результаты по файлам. С помощью флагов можно захватить несколько строк вокруг найденного, чтобы лучше понять контекст.

С чего начать: Просто начните использовать rg вместо grep. В 90% случаев команда rg "что_искать" сделает именно то, что вам нужно, только гораздо быстрее и с более чистым результатом.

Установка:
Все опции установки описаны в документации ripgrep.

Заключение

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

Не пытайтесь освоить все сразу. Выберите один инструмент, который решает вашу самую большую проблему прямо сейчас, и пользуйтесь им в течение недели. Вы будете удивлены, как быстро он станет неотъемлемой частью вашего рабочего процесса.

Комментарии (119)


  1. NeoCode
    07.09.2025 13:31

    Спасибо, интересные утилиты, но это не только терминал но и TUI. А чистый интерфейс командной строки ИМХО так себе. Особенно когда нужна работа с файлами и их десятки, сотни и т. Д.

    Двухпанельный файловый менеджер - вот действительно гениальное изобретение в сфере UI.


    1. dyadyaSerezha
      07.09.2025 13:31

      Двухпанельный файловый менеджер

      И мы знаем название этого менеджера!


      1. JBFW
        07.09.2025 13:31

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


      1. fujikiriku
        07.09.2025 13:31

        И мы знаем название этого менеджера!

        Разумеется Волков Коммандер! Когда нужно что-то исправить, что-то сделать, а у вас на дискете совсем почти не осталось места - только Волков туда поместится! Особенно актуально это, если на сервере, который вы видите, нет современного дисковода 3,5 дюйма, и уж тем более новомодного привода для компакт дисков, выход простой - вставляете пятидюймовую дискету и решаете проблему.



        1. PerroSalchicha
          07.09.2025 13:31

          Особенно актуально это, если на сервере, который вы видите, нет современного дисковода 3,5 дюйма

          Что это за сервер такой странный, у которого на его огромном 40-мегабайтовом MFM-винте не нашлось места для нормального Нортона с поддержкой передачи файлов через СОМ-порт?


          1. mihmig
            07.09.2025 13:31

            DosNavigator же, с встроенным тетрисом!


        1. ColorPrint
          07.09.2025 13:31

          Он под линукс разве есть?


          1. PerroSalchicha
            07.09.2025 13:31

            Есть, называется far2l. Ещё есть бета-версия, неудачная, но своих любителей имеющая, называется mc.


            1. geher
              07.09.2025 13:31

              Не хватает far3l.


            1. mihmig
              07.09.2025 13:31

              Уже не бета, ставится из реп.


      1. pfg21
        07.09.2025 13:31

        far2l или far2m :)
        mc апосля кажется корявым.


      1. aleksandy
        07.09.2025 13:31

        Не менеджера, но командира.


    1. RulenBagdasis
      07.09.2025 13:31

      Я с компьютерами года с восемьдесят какого-то, не помню уже точно. С двухпанельных файловых менеджеров я начинал, vc, nc, dos navigator, потом far, windows/total commander. Потом перешёл на линух, deco, mc и вот это вот всё. И какое-то время назад я, внезапно осознал, что работа из консоли с файлами гораздо быстрее, удобнее и продуктивнее. Я не пытался этого добиться как-то специально, оно само так получилось. Я уже не помню, когда я последний раз запускал файловый менеджер.


      1. geher
        07.09.2025 13:31

        Лучше сочетать консоль и файловый менеджер (благо почти все файловые менеджеры, особенно текстовые, это умеют). Некоторые вещи удобнее и быстрее таки из двухпанельного менеджера.


        1. I7p9H9
          07.09.2025 13:31

          Ага, такого как mc или nvim :) Вообще я не сторониик все в консоль перемещать, но как-то так получается что ТУИ и просто CLI как бы вынуждают тебя потратить время на обучение, и в итоге в долгосрочно перспективе ты становишься эффективнее и быстрее. А GUI как бы расслабляет, что ли, и ты годами просто мышкой тыркаешься или кликами и прокруткой елозишь по массе файлов.


        1. RulenBagdasis
          07.09.2025 13:31

          А почему вы считаете, что знаете, что мне быстрее и удобнее?


      1. wl2776
        07.09.2025 13:31

        Это если только на локальном диске работать. Когда появляется SFTP, командная строка перестаёт быть настолько удобной.

        Мой фаворит Krusader, а под виндой был Far.


        1. RulenBagdasis
          07.09.2025 13:31

          ssh и вот ты на окальном длиске, rsync и скрипты, если нужно файло туда-сюда гонять, scp если 1 файлик передать надо. Я с удаленными хостами работаю каждый день.


          1. CrazyOpossum
            07.09.2025 13:31

            Если скорость не критична - sshfs.


    1. garwall
      07.09.2025 13:31

      зависит, пожалуй, от вида работы. условно `cp source/*.file dest/ будет сильно быстрее, чем выбирать все эти "file" в файловом менеджере.


      1. LAutour
        07.09.2025 13:31

        Для быстрого выбора всех этих "file" в файловых менеджерах есть выбор по маске.


    1. Wolfen113
      07.09.2025 13:31

      Я когда переходила на Линукс самое страшное для меня было отсутствие на него того командер. А аналоги все были архаичные и неудобные. Сам тотол командер мне нужен был лишь из-за двухпанельности. Как же меня удивило и порадовало что на Линукс минт в nemo из коробки она есть, вроде в те времена ток у него из популярных ф менеджеров она и была. Поэтому о тотол командер ныне уже и не вспоминаю. А nemo по прежнему мой любимый ф менеджер.


  1. evgeniy_kudinov
    07.09.2025 13:31

    Если кто не знал, но на го тоже есть много утилит. Вот, например, я вместо МС использую после "допиливания" под себя https://github.com/gokcehan/lf. А в общем TUI интерфейсы мне нравятся.


  1. serafims
    07.09.2025 13:31

    Если в GUI много времени тратится на переключение окон и работу мышкой, это проблема отсутствия логики при построении схемы работы в GUI и нахватка назначенных сочетаний клавиш. А отображение дерева в TUI - вот это боль.
    А утилиты интересные, да.


  1. dpvpro
    07.09.2025 13:31

    Вместо tmux рекомендую zellij. Гораздо дружелюбней к пользователю и на всеми любимом rust)

    Про скрипт интеграции fzf можно было поподробней написать.


    1. a1111exe
      07.09.2025 13:31

      Стабильный? Пробовал когда-то tmux и он умудрился зависнуть, после чего вернулся на screen.


      1. dpvpro
        07.09.2025 13:31

        Стабильный. Использую его в постоянном режиме.


    1. Self_Perfection
      07.09.2025 13:31

      1. domix32
        07.09.2025 13:31

        Так доведите tmux расширениями до функционала zellij из коробки и получите плюс минус то же самое. Не считая отсутвие проблем с zellij на разных платформах, в то время как tmux начинает конфликтовать с дефолтными на том же MacOS.


        1. Self_Perfection
          07.09.2025 13:31

          Я попробовал почитать обзоры zellij но не увидел в них конкретных примеров преимуществ над tmux. Ну хоткеи discoverable - так я уже tmux запомнил

          Можете привести пример чем пользуетесь?


          1. domix32
            07.09.2025 13:31

            Главное отличие - сервер сессий уже есть в поставке. Он же наверняка больше всего памяти и кушает пополам с VM, гоняющим wasm плагины. Коннекты конечно сами не оживут, но лэйаут и вкладки воскреснут при входе в сессию. В tmux насколько я знаю, для этого нужно доставлять и донастраивать внешнее расширение, для установки которого сначала надо доустановить менеджер этих внешних расширений - сколько там артефактов сверху скачается вопрос открытый.

            До появления zellij пользовался tmux в дефолтном конфиге. В половине случае отваливалась либо прокрутка конкретных панелей, либо копирование/выделение в рамках панели. Отдельно были какие-то проблемы с прокидыванием кнопок внутрь контекста панели, но какие конкретно сейчас уже не скажу. Что-то вроде ctrl+alt+p не попадал в мой zsh потому что tmux его скушал. Блокировка панели работала местами странно - где-то блокировался текущий вид, игнорируя поток нового текста (из лога, например), либо блокировка работала, но история буфера фиксировалась размером панели и попытки искатать в его буфере что-нибудь ограничивалось тем что в принципе выведено на экран. Переходы в полноэкранный режим и обратно в половине случаев не слали сигнал, что надо бы обновить размеры pty и перерисовать линии в соответствии.

            Набор вот таких приколов для каждого отдельного терминала был свой - у xterm свои конфликты, у gnome terminal - свои, у маковского console - свои. Помножьте на командные оболочки bash/zsh/ksh/etc. С zellij с подобного рода головными болями не сталкивался, максимум одинаковые биндинги конфликтовали, но это быстро решалось сменой оных. Например, комбинации CTRL+что-нибудь в neovim закономерно могут не работать т.к. zellij их уже перехватил. Но тот же ^C, ^В или ^Z работают замечательно.

            У zellij конфиг выглядит как нормальный конфиг - key, value и набор вложенных лэйаутов в формете близком к json, всё что может исполнятся - живёт изолированно в плагинах в виде wasm модуля.

            tmux настраивается через какое-то подобие vimscript и такую-то матерь - самое оно чтобы добавить ещё один диалект шелл скриптов в список бесполезных навыков.

            Манов по настройке и дефолтного конфига, в который можно было бы заглянуть за опциями в поставке tmux не имется, насколько мне известно. Только справка по тем хоткеям. Либо я куда-то не туда смотрел. zellij позволяет дампнуть текущий работающий конфиг в stdout, а там куда вам самим захочется. Там в том числе и комменатрии про параметры рассказаны.

            По большей части зеля подкупает большей эргономичностью. Хотя вон вышеупомянутый byobu вроде плюс-минус повторяет всю эргономику оборачиваясь вокруг tmux+screen. Не знаю что там с сессиями. Сам не проверял и не планирую, так что это думаю без меня разберётесь.

            Коллега, который пробовал zellij в качестве мультиплексера для своего домашнего серверного зоопарка с nix и freebsd говорит, что в его unbounded зоопарке зелёнка "течёт" и за ночь скушало несколько гигов на что-то. Как он его использует и действительно ли там течь - также вопрос открытый.


            1. Self_Perfection
              07.09.2025 13:31

              Главное отличие - сервер сессий уже есть в поставке.

              А что это такое?

              Отсутствие конфликтов прокруток и выделений — очень солидный аргумент! Я честно говоря считал решение этого практически невозможным. Что обязательно какой-нибудь sixel отвалится.

              С другой стороны насколько я знаю tmux прозрачно интегрируется с iTerm (но я сам маки обхожу за километр)

              У zellij конфиг выглядит как нормальный конфиг - key, value и набор вложенных лэйаутов в формете близком к json

              Что только люди ни придумают лишь бы TOML не использовать (

              Манов по настройке и дефолтного конфига, в который можно было бы заглянуть за опциями в поставке tmux не имется, насколько мне известно.

              man tmux. Дефолтные параметры смотреть типа такого:
              Run tmux show-options -g for session options and tmux show-window-options -g for window options.


              1. domix32
                07.09.2025 13:31

                А что это такое?

                если последний человек закрыл активную сессию (quit не detach), то все открытые панели и табы умирают вместе с ней, также как и открытые соединения куда-нибудь и запущенные приложения. zellij позволяет иметь некоторую персистентность и позволяет вернуться хотя бы к прошлым окошкам, которые были открыты просто подключившись к старой сессии- лэйаут будет ровно такой же какой был последний раз при закрытии сессии. В теории это можно проворачивать и с прокидыванием лэйаутов, но нормально дампать их tmux насколько, мне известно, самостоятельно не умеет, а ручками писать - нужно писать конфиг со спецлексикой, который ещё и нечем валидировать, кроме как глазами. Поэтому люди делали кастомный плагин для tmux для работы с сессиями.

                интегрируется с iTerm 

                в среднем не срослось как-то с ним. я чаще какой-нибудь Alacritty в итоге использовал. Как раз для него мультиплексер отличная вещь т.к. родных табов ему не завезли и мультиоконку емнип он не поддерживал.

                 какой-нибудь sixel отвалится

                этим никогда особо не баловался, поэтому не могу сказать.

                TOML не использовать

                ну, tmux лет на 5 постарше формата, а вот почему зеля с KDL я не знаю, хотя с TOML оне во многом похожи.


  1. DjUmnik
    07.09.2025 13:31

    Вы когда-нибудь задумывались, сколько времени уходит на переключение между окнами, клики мышью и поиск нужной кнопки в GUI? 

    А зачем мне держать в голове множество команд и их аргументы в голове? Я их банально забываю. А в GUI те же действия делаются элементарно. В тех же IDE от JetBrains удобно сделана работа с Git.


    1. NAI
      07.09.2025 13:31

      А зачем мне держать в голове множество команд и их аргументы в голове?

      Затем, что не все работают в IDE. Местами, IDE вообще не втащить (embedded-устройства), максимум что у вас будет vi\vim\nano. Плюс всякие CI\CD, нет-нет, да приходится что-нибудь обновлять через git reset --hard HEAD && git pull


      1. sergio_nsk
        07.09.2025 13:31

        А причём здесь этот частный случай на более общий вопрос?


    1. ImagineTables
      07.09.2025 13:31

      С терминами в этой области вообще большая путаница. Графическими когда-то были тогда ещё новые режимы работы видеокарт (у IBM — CGA), оттуда и пошло. Если не заставлять юзера заучивать десять ключей команды (или справляться каждый раз через --help), а вывесить их на кнопках, это ещё не делает UI именно графическим (GUI). Вот визуальным — да. А графический UI это, например, Фотошоп. Текстовой WYSIWYG для битмапок ведь не придумали. Хотя SVG я частенько дорисовываю кодом (обводки там всякие и пр.).

      Так что, тут надо противопоставлять диалоговый режим и режим «чего изволите», причём оба они текстовые. И я тоже не понимаю, зачем мне вступать в диалог (держа в голове кучу слов языка для этого диалога), когда можно выбрать нужное из меню. Меня ещё со времён квестов бесили такие, где вместо чёткой комбинаторной схемы вариантов (как в Larry 1) надо было вводить глагол (как в Larry 7). Чистое издевательство над юзером, ведь пространство состояний там было заранее определено!

      Что касается мыши, хороший, продуманный UI всегда альтернативно адаптирован под клавиатуру. Через TortoiseGit, например, я с репозиторием работаю с клавиатуры. Чем вообще несколько раз нажать стрелки труднее, чем несколько раз нажать буквы?


    1. MountainGoat
      07.09.2025 13:31

      Если вы задумаете сделать любую автоматизацию или настройку, которую авторы GUI для вас не предусмотрели - то пойдёте вы нафиг. Вот давайте например: есть программа, которая генерирует свежий анекдот. Запускаете, появляется окно, в нём анекдот, всё. Сделайте в вашем брейнсе так, чтобы при каждом коммите в Гит в конец описания добавлялся новый анекдот от программы.

      Из кучи файлов заархивируйте те, у которых длина в байтах делится на 7. ... ну или есть цифровая подпись Бобруйского филиала, но нет Козельского. Копии не делать, места нет.

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

      Хотите реальный пример из жизни в деталях? Пожалуйста. Я как-то раз купил коллекцию из 150 скринсейверов. Ну вот люблю разнообразие. Заплатил 1 раз. Разработчик сказал "Уууу! Еееее!" и прислал мне... 150 отдельных емейлов с ключами. Через GUI я бы это до сих пор устанавливал, хотя лет 7 прошло.


      1. nixtonixto
        07.09.2025 13:31

        Какие-то высосанные из пальца примеры. Если вам приходится сортировать файлы по делимости их размера на 7 - имхо вы что-то делаете не так. Архиваторы в современном Windows-мире - Zip, Rar, 7z, все они работают в пакетном режиме и через родную утилиту, и через плагин к файловому менеджеру. Чебурнет с утилитой товарища майора уже близко, но пока ещё не пришёл. 150 писем с ключами - Outlook может это всё распарсить и обработать через скрипт на Visual Basic.

        Вот вам более реальный пример: удалить из папки Downloads с десятком тысяч файлов одну тысячу файлов за прошедший месяц разных типов и размера, но при этом оставить десяток нужных файлов с рандомным именем и расширением (какой-нибудь драйвер, инструкцию, непросмотренный фильм, документы). Через GUI Total Commander это делается так: клик мышкой в начале списка этих файлов, протянуть вертикальный скроллер и нажать Shift+клик в конце для выделения диапазона файлов, потом скроллим выделенный красным цветом список и правым кликом снимаем выделение с оставляемых файлов, после чего жмём Del. Напишите, как бы вы решили эту проблему без GUI и сколько вам понадобится нажатий на клавиши.


      1. PerroSalchicha
        07.09.2025 13:31

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

        Ну, без проблем - выделю их в гуи-приложении, выберу "расшифровать", и гуй мне запустит столько копий дешифровщика, сколько нужно, для каждого файла по отдельности, в отдельном процессе. Чем хорош абстрактный пример про несуществующее приложение, что его можно решить другим несуществующим приложением :)

        Через GUI я бы это до сих пор устанавливал, хотя лет 7 прошло.

        И сколько вы времени писали скрипт, который извлекает клюй из емейла и вводит его куда-то там при запуске установщика? Вот, с Аутлуком тоже такое можно, и скорее всего, даже быстрее, т.к. есть отладчик.


      1. DarthVictor
        07.09.2025 13:31

        TUI для git из статьи — это точно такой же GUI, только со сломанной подсветкой в редакторе кода.

        Он нужен в двух случаях

        1) вы не осилили полдюжины консольных комманд гита

        2) разработчики вашего редактора не осилили режим просмотра изменений в файле


      1. kurtov
        07.09.2025 13:31

        Сделайте в вашем брейнсе так, чтобы при каждом коммите в Гит в конец описания добавлялся новый анекдот от программы

        пфф, легко. Кликнул настройки, дополнил промпт. Теперь по клику всегда новый анекдот.


    1. KMiNT21
      07.09.2025 13:31

      Кстати, я уже давненько делал тулзу-обертку, которая валидирует командную строку через LLM-ку и переставляет аргументы, как надо. :) Психанул, когда в очередной раз забыл, как там, "conda env list", или "conda list env", или... А так можно хоть словами описать аргументы, а LLM-ка правильно отформатирует (справляется даже Gemini моделька, которая бесплатно по API).


      1. censor2005
        07.09.2025 13:31

        Думаю, примерно так и начнётся восстание машин - однажды Gemini передаст вам в ответе вместо нужного набора команд свои собственные, и... ядерная боеголовка улетела в точку назначения )


        1. KMiNT21
          07.09.2025 13:31

          У меня оно подтверждения еще требует для ввода. :) А вообще можно для валидации вторую независимую LLM-ку использовать. Они точно не договорятся. :)


          1. Vilos
            07.09.2025 13:31

            как знать, как знать....я помню несколько лет назад по сети ходил ролик где умный чайник в умном доме с умным холодильником договорились и отжали хату у хозяина дома, где они жили...если не изменяет память это сберовский ролик был... и это семь-десять лет назад было, когда только умные дома пошли, тогда LLMок еще и не было... сейчас не просто чайник дом отжать может, но и в долги загонит ;)))


      1. winorun
        07.09.2025 13:31

        А таб не работал? Чем мне современные интепритаторы нравятся, так это тем что не надо помнить аргументы, тапнул - варианты высветились.
        Зачастую у меня работа с консолью сводится к четырем кнопкам, таб, ентер, стрелка вверх, стрелка в право


      1. domix32
        07.09.2025 13:31

        для такого алиасы и придумали. сделали бы какую-нибудь clsenv и никакие б LLM гонять ради этого не пришлось бы


    1. segment
      07.09.2025 13:31

      Пользуюсь SourceTree и тоже не испытываю необходимости в командной строке.


      1. domix32
        07.09.2025 13:31

        Учитывая, что нынче эта штука требует постоянного подключения к внешним серверам, плохо работает с LFS и вообще с репозиториями я удивлён, что кто-то продолжает им пользоваться. Уж лучше черепашка.


        1. segment
          07.09.2025 13:31

          А можете рассказать про требование подключения к серверам? Не замечал чего-то подобного. Обычный git клиент, которому уже много лет, без лишних наворотов. Diff довольно удобный.


          1. domix32
            07.09.2025 13:31

            Первым делом он вам сходу предлагает залогиниться в atlassian. Каждый раз. Параллельно периодически ходит проверять обновления. Не качать обновления нельзя, ибо на macOS Catalina права доступа к файлухе поменялись, а также убрали поддержку x32.

            Отдельные приколы возникают, когда репозиторий ссылается на какой-нибудь сервер скрытый за vpn. Открываешь ST без подключения к vpn и ждёшь пару минут, пока он разблокирует тебе интерфейс, дождавшись таймаута подключения к этим серверам. Даже если ты не смотришь в эти репозитории, а зашёл посмотреть в соседнюю.

            Отдельные приколы ловили на настройках LFS и у некоторых людей были проблемы на windows из-за шифрования чего-то куда-то (условно - http в локальной сети ему не нравилось, хотет https). Оно или не добавляло репозиторий в древо или сыпало миллионом ошибок, что что-то пошло не так. Мы, как разрабы, видавшие виды, это переживаем спокойно, а вот художники были мягко говоря не в восторге, в итоге появилась отдельная работа помогать сопровождать контроль версий для художников.

            diff удобный для чтения, но разрешение конфликтов через него лучше не делать, т.к. он делает это во-первых очень неспешно - видимо собирает какие-то метрики или ещё что-то, а во-вторых с некоторым шансом он просто падает, в третьих у него какие-то проблемы со счётом и стеджинг строк приводил к невероятному пересчёту номеров строк из-за которого ты ещё потом полчаса искал, а где та добавленная строка была. Иногда отслеживание изменений делало совсем дичь, когда при рефакторинге нельзя было застеджить изменения частично, иначе код будет просто сломан.

            Подсветка синтаксиса обычно ломается спустя пару файлов и пересчёт строчек ведёт к новому перерендерингу всего дифа с нуля - как, зачем и почему не кэшировать - ответ никто не знает. Эксперимента ради попробуйте постейджить отдельные строчки кода в ST и том же lazygit или gitui. Будете неприятно удивлены неспешности ST.

            Tortoise git в этом плане сильно проще и нагляднее, хотя и у него тоже были какие-то проблемы с недостаточностью функционала и неспешностью подстветки синтаксиса, хоть и не настолько сильные в сравнении с SourceTree.


    1. Wolfen113
      07.09.2025 13:31

      Не во всех случаях. К примеру на арче я устанавливаю, удаляю и обновляю программы и систему через yay с командами завернутыми в алиасы по три буквы. Ибо нажать хоткей по открытию терминала и там ввести 3 буквы + название программы, а дальше просто жмакать ентер. Это быстрее и надёжнее чем 33 щелчка мышкой наводясь по окнам интерфейса, который ещё может зависнуть и не пишет текстом процесс установки поэтому и если что не так идёт, или ошибки, вовремя не увидишь.


  1. StjarnornasFred
    07.09.2025 13:31

    Вы когда-нибудь задумывались, сколько времени уходит на переключение между окнами, клики мышью и поиск нужной кнопки в GUI?

    Гораздо меньше, чем на набивку команд в терминале.

    В мире, где каждая секунда на счету, терминал остается самым мощным и недооцененным инструментом разработчика.

    Да? А я думаю - мышка.

    Он дает вам всю мощь Git, но с наглядностью GUI, не заставляя покидать уютный терминал.

    Что бы такое сделать, чтобы было как в GUI, но не GUI... Не лучше ли сразу использовать нормальное решение? А то иначе окажется, что как бы мы ни вертелись, а все дороги идут к нему.

    Каждый такой случай - это переключение в браузер, запрос к чату гпт или поиск в браузере, что влечет за собой потерю концентрации

    Жесть. То есть вы предлагаете настолько слиться с компьютером в ходе работы, что переключение окон вызывает у вас потерю концентрации? Может, вас самих пора оцифровать и загрузить прямо на жёсткий диск... Тогда вам и графический интерфейс не понадобится. А, ну да. Уже.

    Каждый из этих инструментов решает реальную, ежедневную боль и возвращает вам десятки минут каждый день.

    Вы даже не представляете, сколько реальной ежедневной боли вы сможете решить, просто переключившись из терминала в нормальный графический интерфейс!

    Я, если что, не против терминала. Иногда и сам пользуюсь командной строкой, есть полезные вещи. Но - именно как вспомогательный инструмент. Пользоваться им как единственным - всё равно что собирать кубик Рубика вслепую: в принципе можно научиться и со стороны выглядит круто, но зачем? А если при этом ещё и не пользоваться мышкой - А нормальные реализации терминала её давным-давно научились воспринимать - то это выглядит просто как извращение.


    1. JBFW
      07.09.2025 13:31

      В терминале мышь нужна ровно для двух вещей:
      - выделить строку
      - вставить строку

      Больше в терминале мышь не нужна ни для чего, это просто неудобно.


      1. pfemidi
        07.09.2025 13:31

        "Is a mouse a device to point an Xterm to type in?" (C) откуда-то из интернетов. И я полностью согласен с таким определением мыши.


  1. Zuy
    07.09.2025 13:31

    Lazygit - огонь! Есть ещё от того же автора и в том же стиле Lazydocker.

    Ещё посоветую gdu. Это TUI версия du написанная на Go. Показывает, что сколько места занимает и позволяет удалять. Вся прелесть в том, что она это делает в много потоков и очень быстро.


    1. pfg21
      07.09.2025 13:31

      ncdu !! :)


      1. Zuy
        07.09.2025 13:31

        тормозит ncdu примерно в 10раз по сравнению с gdu в этом вся проблема. Когда удалять нужно результаты билдов ядра линукса или андроида без gdu вообще никак.


        1. dpvpro
          07.09.2025 13:31

          `sudo ncdu -t 5 -x /`

          производительность повышается, если включить многопоточность с помощью параметра -t


    1. mihmig
      07.09.2025 13:31

      ncdu ещё, из стандартного репозитория в любом дистрибутиве.


      1. Zuy
        07.09.2025 13:31

        Ну да, которая жутко тормозит. Только что попробовал. Папка примерно 5 миллионов файлов на 100гб. померял сколько сканирование занимает:
        ncdu - 53sec
        gdu - 4sec

        Удаление даже пробовать не буду, боюсь не дождаться когда ncdu закончит


    1. iroln
      07.09.2025 13:31

      Lazygit - огонь! Есть ещё от того же автора и в том же стиле Lazydocker

      Да, только никакой текст скопировать нельзя ни в lazygit, ни в lazydocker. Что забавно для текстового UI.


      1. CaptainFlint
        07.09.2025 13:31

        С нажатым Shift выделяется мышкой и копируется через Ctrl+Shift+C. Стандартное поведение для TUI.


        1. iroln
          07.09.2025 13:31

          Это понятно, но это очень неудобный способ выделения текста. Просто сравните с выделением текста в любом редакторе, думаю, проблемы usability очевидны. То, что такое выделение не сбрасывается при клике в другое место хотя бы. Нужно нажать Esq, либо Ctrl+Shift+C.


          1. CaptainFlint
            07.09.2025 13:31

            Всё-таки это совсем не "никакой текст скопировать нельзя".

            Это неизбежная плата за управление мышью. Некоторые TUI-программы не поддерживают мышь, и в них можно использовать выделение текста напрямую (как, скажем, в top, less, vim без опции mouse=a). Но в программах типа mc, htop, lazygit, где мышиные клики выполняют разные действия, приходится отделять эти действия от терминального выделения текста. Поэтому и используется Shift. В GUI-программах проще, так как там существует явное разделение контролов по их назначению, а терминал с точки зрения системы — это одно сплошное текстовое окно.

            Кстати, Esc и Ctrl+Shift+C терминальное выделение не сбрасывают; сбрасывает Shift+клик.


            1. iroln
              07.09.2025 13:31

              Кстати, Esc и Ctrl+Shift+C терминальное выделение не сбрасывают; сбрасывает Shift+клик

              Забавно, но у меня работает не так. Shift+клик продолжает выделение. То есть выделяются строки от строки, где начал выделять и заканчивая строкой куда кликнул. А Ctrl+Shift+C и Esq как раз очищают выделение.


              1. CaptainFlint
                07.09.2025 13:31

                Интересно… Видимо, зависит от терминальной программы. У меня KDE+Konsole. Пробовал также в GNOME+terminal, там так же. Поэтому не приходило в голову, что может быть по-другому.


        1. Zuy
          07.09.2025 13:31

          блин, что-то не работает на маке :(


          1. Zuy
            07.09.2025 13:31

            А нет, заработало после добавления в конфиг:

            gui:
              mouseEvents: false

            Ох, спасибо тебе, @CaptainFlint, за такую наводку :)


            1. CaptainFlint
              07.09.2025 13:31

              Упс, забыл уточнить, что я говорил про линукс… В макоси никогда не пробовал. Хорошо, что там тоже нашёлся способ. :-)


    1. iroln
      07.09.2025 13:31

      gdu работает заметно быстрее чем ncdu, но UI один в один и всё равно нужно ждать индексации директорий.

      Вот ещё из той же оперы где не надо ждать индекс, делается в фоне:

      https://github.com/Canop/broot
      https://github.com/bootandy/dust
      https://github.com/Byron/dua-cli
      https://github.com/bgreenwell/lstr


  1. gluck59
    07.09.2025 13:31

    Про tmux

    Я полный профан в никсах, но иногда приходится что-то делать в консоли. Для "интернет моргнул и сессия отвалилась" приучаю себя использовать screen, но мне он кажется дико неудобным: надо помнить что скрин на сервере запущен, помнить ключ -rd, а уж переключаться между сессиями... ой можно это как-нибудь без меня...

    Подскажите плиз кто использует и screen и tmux: на чем вы остановились по итогу?


    1. CrazyOpossum
      07.09.2025 13:31

      tmux. Раньше был на screen, но tmux удобнее.


    1. JBFW
      07.09.2025 13:31

      Другой вариант: использовать впн к своей машине. Если "интернет моргнул" - будет просто ждать восстановления связи, если конечно не закрыть терминальное окно со своей стороны.


    1. kma21
      07.09.2025 13:31

      Мне кажется, что tmux развивается активнее. Его и использую и он более "нативный" - есть окно и в нём у тебя panes (отдельные терминалы).
      Если использовать vi-keys, то прям вообще достаточно удобно получается.

      Если немного погуглить и привыкнуть к хоткеям, то достаточно удобно. И копирование текста есть, и можно несколько "окошек" с терминалом открывать, и отключаться от сессии.
      Начать можно тут
      https://habr.com/ru/articles/126996/


    1. bolk
      07.09.2025 13:31

      Я использую mosh


    1. CaptainFlint
      07.09.2025 13:31

      Если исключительно для "интернет моргнул", а не для окон-панелей, то я остановился на EternalTerminal (ET). screen/tmux/mosh ограничивают терминал своим экранным буфером, что в некоторых случаях неудобно, ломает привычную прокрутку. А с ET таких проблем нет, он просто тянет текущую SSH-сессию. Но есть недостаток: хоть он работает через стандартный SSH, ему требуется дополнительный демон на стороне сервера.


    1. Zuy
      07.09.2025 13:31

      Остановился на Byobu. Это надстройка над screen. Делает именно необходимый минимум и не надо никаких флагов помнить


    1. 13werwolf13
      07.09.2025 13:31

      есть такая штука, byobu. по сути своей это набор конфигов для tmux и screen. по дефолту в бекенде tmux. он сильно проще чем голый tmux.


    1. dot22
      07.09.2025 13:31

      для шелла настроил алиас
      alias scr='screen -rd || screen'

      по которому, если screen уже запущен в фоне, то подхватывается существующая сессия, если screen ранее запущен не был, то создается новая, с заранее прописанными в конфиге нужными окнами

      screen -t htop sudo htop
      screen -t messages sudo less /var/log/syslog
      screen -t sudo sudo su -
      screen -t bash

      caption always
      caption string "%{rk} %c %{dd} %{+b M}%n %{-b dd}%-w%{+b B.}%n* %t%{-}%+w%<"


      1. gluck59
        07.09.2025 13:31

        "А разве так можно было?" ©

        С алиасом понятно, а где прописывается остальное? Я в никсах полный увы...


        1. dot22
          07.09.2025 13:31

          Все строки нижнего кода в комметарии прописываются в самом конфиге screen ~/.screenrc. Из них первые четыре создают различные окна с запуском в них различных команд (после второго слова, стоящего после опции -t, которое задает заголовок окну) до конца строки) в одной сессии (между которыми можно переключаться по хоткеям Ctl+a n \ Ctl+a p (n - next, p - previous) или Ctl+0..9 (номер окна в сессии). Последние две строки выводят внизу экрана строку со служебной информацией - дата, номер активного окна и названия окон (слово после опции -t из первых четырех строчек кода в комментарии)


          1. gluck59
            07.09.2025 13:31

            Сорри, по итогу получается еще сложнее чем было.


            1. dot22
              07.09.2025 13:31

              Так нижний код из комментария - это уже любительство и украшательство ) Если нужно просто перехватывать последнюю запущенную сессию - достаточно алиаса в шеле


              1. gluck59
                07.09.2025 13:31

                Мерсибо ку, с алиасом будет удобнее.


                1. dot22
                  07.09.2025 13:31

                  Технически, никто не может запретить вводить полную команду непосредственно в окне консоли
                  screen -rd || screen
                  но да, если запускать постоянно на одном и том же сервере, то алиас будет удобнее. Собственно, для чего оне и придназначены )


    1. Ilirium
      07.09.2025 13:31

      Я пользуюсь tmux. Пробовал screen, но не вижу в нем смысла. В macOS есть офигенный эмулятор терминала – iTerm. Так вот, при использовании tmux в нем не нужно помнить про переключение между окнами и операции с ними, все это сделано через интеграцию с iTerm. При первом вызове tmux пишешь: tmux -CC, при повторном, когда нужно подключиться к сессии: tmux -CC a. Открывается дополнительное окно терминала, в котором в виде вкладок представлены все созданные экраны tmux.

      При этом удивительно, что не существует эмулятора терминала под Linux, который бы поддерживал такую интеграцию...


  1. Vladislav_Dudnikov
    07.09.2025 13:31

    Ещё есть lazydocker. А для любителей nvim плагин kdheepak/lazygit.nvim, связка lazygit + vim-fugitive прям топ, долго искал как нормально работать с git в nvim.


  1. Alinaki
    07.09.2025 13:31

    CLI based GUI это худший из видов GUI. Имитировать все те же самые виджеты, но рисуя их текстом — это ужасно и бестолково.

    Хоткеи, говорите? Кто мешает их в графическом интерфейсе-то использовать? А заодно ещё и мышь получить.


    1. edo1h
      07.09.2025 13:31

      CLI based GUI

      какое-то дурацкое название для TUI


      1. Alinaki
        07.09.2025 13:31

        зато отлично подчёркивает абсурдность происходящего


    1. Proger3301
      07.09.2025 13:31

      Так и не понял в чем заключается бестолковость отрисовки UI текстом, ну и ладно.

      TUI утилиты быстрые, легковесные и не требуют графического окружения. Подключился к серверу по ssh поставил утилиту и сразу запускаешь.


      1. Alinaki
        07.09.2025 13:31

        если тебе надо подключаться к серверу и делать что-то утилитой с TUI, ты что-то делаешь не так


        1. Sau
          07.09.2025 13:31

          Мне нужно headless raspberry pi подключить к вай-фаю. Редактировать кофиги, или выбрать сеть и ввести пароль через TUI?


          1. Stanislavvv
            07.09.2025 13:31

            Для одноразового действия, которое не повторяется — норм, пофиг гуй или туй. А вот если это надо делать регулярно, как предлагается в статье...


  1. Viacheslav01
    07.09.2025 13:31

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


  1. iroln
    07.09.2025 13:31

    По сути в статье предлагается заменить GUI на TUI. TUI в терминале лепят не от того, что это очень удобно (с голым текстом особо-то не разбежишься), а потому что GUI приложения в основном стали писать на проклятых электронах "web-технологиях". В итоге программы требуют какое-то огромное количество ресурсов, совершенно несоразмерное с предоставляемой функциональностью и ценностью.

    У Никиты Прокопова был пост про это как раз. В терминал идут от безысходности и усталости от плохого софта, а не потому что там какой-то особенный супер-удобный UI, повышающий продуктивность в 100500 раз.


  1. eps
    07.09.2025 13:31

    ripgrep или ack?

    Пользуюсь ack и оно мне очень нравится.


  1. viktorov_aa
    07.09.2025 13:31

    Лично для меня терминал не вопрос удобства, а вопрос настроения. Вот пишешь в него что-то, он что-то делает в ответ. Кайф и магия. Сразу чувствую себя лучше, чем эти скучные GUI


  1. Proger3301
    07.09.2025 13:31

    Я бы еще упомянул yazi (TUI файловый менеджер), lazysql (TUI менеджер SQL баз данных) и lazydocker (TUI менеджер докер контейнеров и имейджей)


    1. Kenya-West
      07.09.2025 13:31

      lazydocker

      Он хорош ровно до того момента, когда project у compose и имя директории различаются. А у меня это в 100% случаев, так как compose'ная семантика не обязана дружить с "низкоуровневой" файловой структурой. Контейнеры в таком случае через него почему-то перестают слушаться. И тогда спасает dcv.


  1. PerroSalchicha
    07.09.2025 13:31

    Вы когда-нибудь задумывались, сколько времени уходит на переключение между окнами, клики мышью и поиск нужной кнопки в GUI?

    Когда знаешь, куда жать - весьма немного. Когда знаешь консольные команды, а куда жать в GUI не знаешь, то в консоли будет быстрее. Когда не знаешь знаешь консольные команды, в GUI будет быстрее.


  1. paluke
    07.09.2025 13:31

    Не туда