All streams
Search
Write a publication
Pull to refresh

Comments 150

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

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

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

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

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

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

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

Вау. Вот это книга. Я аж увлекся) К сожалению, в моем детстве такие книги прошли мимо меня

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

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

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

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

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

Не хватает far3l.

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

но своих любителей имеющая (с)

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

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

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

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

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

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

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

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

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

И какое-то время назад я, внезапно осознал, что работа из консоли с файлами гораздо быстрее, удобнее и продуктивнее

вообще ни разу не удобнее. Так и представил как надо отсортировать файлы по размеру + дате модификации + маске )))

grep не нужен, ls сам маску принимает, вот, например:

ls -lhS *.txt

:facepalm: так часто отправляю вывод в греп, что уже "профдеформация"... :)

Не принимает. Маску разворачивает шелл, а ls на входе получает уже готовый полный список. Что может вызвать проблемы, если файлов очень дофига.

Кстати, да. Был когда-то кейс, когда нужно было удалить кучу файлов в директории, и "rm *" не работало. Емнип, тогда это решили с помощью "find . -type f -exec rm {} \;".

и где здесь сортировка и фильтрация ? Или я потом среди 10к файлов должен выбирать глазами ? )))

В каком смысле "где"?.. Вот:

ls -lSth | grep 'whatever'

И сортировка, и фильтрация. "man ls" и "man grep" к вашим услугам.

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

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

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

Концепция выделения и вкладок в nnn тоже неплоха.

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

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

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

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

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

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

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

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

Главное отличие - сервер сессий уже есть в поставке. Он же наверняка больше всего памяти и кушает пополам с 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 зоопарке зелёнка "течёт" и за ночь скушало несколько гигов на что-то. Как он его использует и действительно ли там течь - также вопрос открытый.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Не очень понятно, как это масштабируется на, скажем, 100000 файлов. Или больше. Сколько времени придётся "тянуть вертикальный скроллер"?

Дома-то оно ясно - Downloads, Pictures, Documents и в таком духе - обычно домашний пользователь имеет дело с микроскопическими количествами файлов. На работах бывает очень по-разному.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Много лет, когда в SourceTree сделали гигантский UI, перешёл на Fork. До сих пор пользуюсь и радуюсь.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

`sudo ncdu -t 5 -x /`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gui:
  mouseEvents: false

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

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

Как вариант, для этих целей можно использовать какой-нибудь терминал с vi-mode, например, alacritty

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

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

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

Про tmux

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

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

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

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

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

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

Я использую mosh

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

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

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

для шелла настроил алиас
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%<"

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

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

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

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

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

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

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

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

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

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

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

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

CLI based GUI

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

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

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

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

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

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

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

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

вообще ни разу нет. Когда тебе нужно работать, а не свистелки с перделками, то tui отличный вариант. Меня уже от монстров на электроне воротит.

k9s / mc / goaccess лучшее, что можно было придумать. Я видел gui для k8s - lens или как там его - вообще даже рядом не стояло

tui может быть удачным, никто не спорит. но идеологически он не имеет преимуществ, не предоставляет для пользователя ничего того, что не может дать gui

Как минимум скорость. А еще бонусом не нужно отрывать руки от клавиатуры, чтобы потянуться к мышке

Никто не мешает иметь GUI, точно так же управляемый с клавиатуры. Это вопрос не технических ограничений, а конкретной реализации.

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

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

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

ripgrep или ack?

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

ripgrep на порядок быстрее, в остальном очень похож. Поэтому только rg.

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

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

lazydocker

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

PR отправь, сделай мир лучше!

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

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

5 утилит командной строки, которые заменят вам GUI

А не ерунда ли получилась? Всего 5 утилит заменят GUI? Терминал хорош тем, что при линейном росте «утилит» полезность растёт минимум квадратично, от чего любой заголовок конкретными числами малость напрягает.

По комментариям, за отсутствием кармы, соберу в кучку.

Двухпанельный файловый менеджер - посадка между стульями. Пример: заходим со смартфона по SSH. Ориентация портретная - клава. Места под две панели - нет, nnn - акуна матата.

Исследовано - терминал и гуй для людей с разной структурой мозга. При этом терминал изгажен недостатком внимания, а гуй - преклонением перед нубами. Нуб всё равно выучит шорткаты и даже переключит Code в режим Vim, получив почти рабочую химеру. Терминал получает дополнительное внимание, причём в основном от движения «перепишем на Rust» при поддержке движения «перепишем на Go». Как по мне, в IT появились лучики надежды. Или резче - в куче 💩 (наконец то? теоретически?) возможно обнаружение 💎.

Недоумение по поводу кажущейся имманентной алогичности TUI понятно - да, можно заняться глупостями имитируя GUI, но можно и не заняться. Уже Vim - вполне себе TUI.

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

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

И вообще, вот делаешь что-то на компе и захотел лечь - берёшь планшет и выбор между Jump Desktop и Termius не очевиден.

Пример: заходим со смартфона по SSH. Ориентация портретная - клава. Места под две панели - нет,

Почему нет? Использовал mc под Sailfish, вполне хватало места под обе панели даже в портретной ориентации.

Тут видно и можно долго смотреть
Тут видно и можно долго смотреть
Тут ничего не видно
Тут ничего не видно
Тут видно но плохо, долго смотреть нельзя, но хоть кнопки снизу влезли
Тут видно но плохо, долго смотреть нельзя, но хоть кнопки снизу влезли

Вот поэтому. Я понимаю, линуксоидам всё божья роса, но ради попавших сюда безвинно запостил.

Тут ничего не видно

Формат списка "Укороченный", один столбец, и все уже не так печально.

Опять же, в Sailfish есть терминал с прозрачной клавиатурой (убираемой и с настраиваемой прозрачностью), наложенной на экран, что позволяет вполне комфортно пользоваться терминалом в альбомной раскладке.

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

Я понимаю, линуксоидам всё божья роса,

И причем тут линуксоиды? Я пользовался двухпанельным файловым менеджером еще на Windows Mobile 5. И вполне доволен тем опытом. Вот на крошечном экране явамабилки это уже было не то. Но там и в чистой консоли не очень. Там только встроенной однопанелькой почти нормально было пользоваться.

И вообще, вот делаешь что-то на компе и захотел лечь

Вот! Я бы после этого сразу поставил точку. С уточнением, что делаешь работу. И вот так весь рабочий день отчаянно хочешь лечь, а потом - уже ночью - ясно понимаешь, что надо лечь, но уже отчаянно не хочешь. :)

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

проблема навести порядок в этом и сделать одно гуи для всех мои гуи)))

проблема навести порядок в этом и сделать одно гуи для всех мои гуи)))

Один из этапов раннего профессионального развития - приступы желания создать one GUI to rule them ALL. :) Обычно интенсивность и длительность снижается со временем, пока не приходит окончательно мысль, что это же и есть операционная система (или Emacs).

Emacs занятныя штука, судя по скринам, типа собственная вселенная.

о полноценной ос (куда запихая все свои проги) тоже думал и это будет повышаться.
еще в июне попробовал с++/ассемблером вывести свой текст вместо Insert boot disk and press any key
2,5 дня мучался. и, на этом пока всё.

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

Я так и не понял, что умеет делать ripgrep такого, чего не может grep. Ну, разве что ржаветь.

Однако, многопоточность - веский аргумент.

Для поиска по истории использую atuin. Не представляю, как раньше жил без него

Тоже пользовался atuin. Но неожиданно для себя узнал, что fzf так тоже может. Кроме этого может много чего ещё. Так что, atuin успешно удалён

В мире, где каждая секунда на счету, 

К счастью, я живу не в таком мире, так что буду по старинке использовать всякие гуи :)

Цитата tmux

Цитата Сессии - ключ ко всему

а для винды есть что-то подобное? не штатные средства, гибернация или сохранения открытых окон в win11

rg в дополнение поддерживает UTF-16 из коробки.

Не каждый из традиционных инструментов может этим похвастаться.

Я человек не консольный, поэтому из всего выше описанного использую ток fzf для быстрого поиска команд. Причем я запариламт так что с подачи нейросети скриптом переделала его в более удобную мне работу. Что бы он мог искать команды по ру подписям что делаю через #. И даже отдельный текстовый файл с такими командами создала и к башу подцепила через поопись пути в .bashrc.

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

ссылка на qwen для создания ключа битая, есть у кого знание как получить этот токен?

А мне lazygit так и не зашел, для каких-то сложных вещей все равно удобнее использовать гуишные тулзы(для меня это JetBrains). А вот для вещей попроще, типа просто посерфить по истории, tig это наше все, точно входит в мой топ-3 tui тулз.

Еще я бы посоветовал atuin для просмотра истории https://github.com/atuinsh/atuin Невероятно удобная вещь.

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

что-то у меня наоборот сложные вещи кончались cli, а для простых у jetbrains удобно сделано, не спорю

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

поделитесь секретом, куда вы тратите все освободившееся время )))

Sign up to leave a comment.

Articles