Comments 97
Забыл. Спасибо, обязательно прикреплю)
Четко получилось:) постараюсь сделать свою версию по цвету, но думаю что лучше не получится)))
Делаем Linux терминал красивым и удобным
Предлагаете поверить на слово? Где примеры, где КДПВ?
Не работает!
$ sudo apt install zsh
Пароль:
* apt is not available for oracle-jdk-bin-1.8 on x86_64
* IMPORTANT: some Java tools are not available on some VMs on some architectures
Вы на Linux пересели позавчера? :)
Если подробнее суть претензии, автор даёт команды, не объясняя сути и области применения. Если он думает, что apt есть везде, то это ошибка. Пример я привёл.
Все правильно написано с небольшой ремаркой: шрифт можно ставить любой если это шрифт terminus
Что за эмулятор терминала с табами на скриншотах?
Из плюшек — удобные фичи для работы с SSH (ctrl + /)
а по теме — это все как-то больше о настройке шелла, а не терминала. а по настройке терминала что-то есть? типа что и как в названии табов, переключение между табами и т.д… а то мне постоянно что-то не так, но я даже толком понять не могу что. так что и в настройках рыться лень. Но может кто уже порылся и что-то интересное насоветует…
В большинстве эмуляторов вкладки уже реализованы, даже есть хоткеи обычно, на создание/открытие/закрытие/переключение между ними.
По поводу зелёного по черному – я сам долго сидел за таким. Потом понял, на сколько проще и приятнее работать, когда у тебя синтаксис подсвечен, а основной цвет не режет глаза
Кроме шуток — глаза меньше устают.
Итак, как же сделать дефолтный терминал удобным и приятным в использовании?Самый простой и быстрый способ — fishshell.com
По кастомизации zsh ему не уступает
Fish имеет достаточно много отличий в синтаксисе базовых конструкций от стандарта, заданного sh (или сейчас уже даже скорее bash). Что, по сути, накладывает требования помнить как эти конструкции писать в двух разных вариациях: совместимой со всем миром sh-like для написания различных скриптов и несовместимой fish-like для работы в терминале. И этот отход от стандартов — прямо такой толстый минус, что fish является штукой сильно на энтузиаста.
P.S. в своё время я пытался из любопытства найти хоть что-нибудь, в чём zsh уступает fish'у, но так ничего и не нашел.
Чего лично мне не хватает и что я использую у себя:
- Информация о текущей директории. Каждый раз набирать pwd, чтобы понять где ты находишься так себе решение
- Время запуска команды. Данная информация много раз выручала меня, особенно при отладке
- Имя хоста. Да оно есть в названии таба, но как по мне это не очень удобно
- Имя текущего пользователя
- Хоть какой то пробел между двумя командами, у вас все сливается. Искать что либо в таком сплошном тексте — будет тяжело.
Для сравнения внешний вид терминала и приглашения, которым я пользуюсь последние лет 10
Информацию по git специально не стал добавлять. Использую другие инструменты для этого.
слишком многовато лишней информации, дата и время всегда отображаются в правом верхнем углу, в командной строке они не нужны, имя пользователя всегда одно и тоже, или у вас много пользователей на личном mac? ну тоесть всегда лишняя строчка есть в терминале, ненужная
Мне важны дата и время выполнения каждой команды.
Часто подключаюсь к удаленным серверам, так что имя хоста и пользователя тоже нужны
Я пробовал сделать приглашение ввиде одной строки — мне не зашло
Отображение user@host — стандартный, удобный и привычный способ сходу сообразить контекст что у нас тут вообще за терминал открыт и плюс-минус зачем он открыт. Весьма и весьма удобно при куче их.
Про дату соглашусь — для интерактивной работы только перегружает вид. Если же нужно посмотреть когда именно что-то делалось, то спасает правильно настроенная запись в .zsh_history (в частности немедленная запись вместо отложенной, легко способной превратиться в "никогда").
На счет директории — показывая полный путь, отображается много лишнего. одна длинная строка, которая занимает половину ширины терминала. Именно поэтому я описал, как отображать только текущую директорию. Если вам нужно отображать её полностью, не вносите эту настройку:
У вас этого ничего нет, а мой комментарий был именно о вашем финальном варианте.
Длина строки с текущим путем настраивается через переменную окружения — PROMPT_DIRTRIM
Насчет .zsh_history — не использую zsh, по нескольким причинам. Каждый раз искать время в файле неудобно, имхо
нет, не настраивается. PROMPT_DIRTRIM — длина директории. 10 директорий не будут занимать меньше 20 символов ни при каких настройках, пока они отображаются.
При чем тут zsh_history и о каком времени идет речь?
Дата/время выполнения команды настраивается, как я уже говорил:
В любом случае, цель статьи — помочь новичкам (и не только) сделать терминал приятным и функциональным. Если вам не нравится ни одна комбинация из большого количества настроек, увы, тема вам не подойдет. Я не намерен навязывать никому свое мнение. Ничего не мешает вовсе пропустить часть с кастомизацией внешнего вида, выполнив только первую часть инструкций в статье.
Как время может выглядеть пестро?как раз — как на вашем скрине
Цвета тут при чем?когда в терминале проводишь 50%+ от рабочего дня — то очень даже причем. Но тут соглашусь — все очень индивидуально. Кто-то любит когда терминал черным на белом фоне, тук каждому свое. Но встречал пару раз такие кислотные цвета — что просто удивлялся, как у людей глаза не болят от такого
В любом случае, цель статьи — помочь новичкам (и не только) сделать терминал приятным и функциональным.так я же вам и привел примеры, что в вашем варианте функциональности очень мало. А если убрать информацию о git, то функционала по сравнению с дефолтными настройками по сути не будет совсем
Ничего не мешает вовсе пропустить часть с кастомизацией внешнего видатогда вообще нет смысла от PowerLevel10K, имхо. Вся его суть — это про всякого рода визуальные «улучшатели», чтобы коллегам показать, что вы не просто так запустили терминал ;)
Я понял вашу точку зрения. Но я не люблю когда зелёный по черному режет глаза. Гораздо приятнее и проще ориентироваться, когда разные типы текста (строки, команды, аргументы и т.д.) подсвечены разными цветами. Это все очень индивидуально, безусловно. Опять же, я не утверждаю, что моя комбинация цветов и темы — лучшая. Каждому свое, я лишь показал пример с четкими инструкциями, который многим понравился
Проблема автоматического отображения статуса git — очень большие тормоза при любом действии в терминале внутри директории с большим git проектом. Пользоваться невозможно — пришлось отключать.
В целом, все почти так же настроено. Такой кастом реально удобен.
Т.к. у меня еще и кластеры-шмастеры, открыл для себя kube-ps1 — видно какой контекст установлен и какой кластер ты сейчас сломаешь ))
zsh умеет дополнять флаги по табу. Например, довольно удобно обновлять сабмодули в репозитории через
git subm<TAB> u<TAB> --i<TAB> --rec<TAB><ENTER>
У меня bash, тоже так может, полностью поддерживает ваш пример.
Ок, видимо в тех окружениях с bash, что у меня сейчас есть под рукой что-то недоустановлено / недонастроено.
Ещё вспомнил: в zsh, в отличие от bash автодополнение работает в подвыражениях (например, echo "$(...)"
), а ещё у меня в командах вида sudo VAR_NAME=/... run_something
bash не дополняет путь.
Вот ровно по этому проще привыкать к тому, что стандартно почти везде по умолчанию. А все эти украшательства просто баловство от нечем заняться. Разве что дома на линуксе сидишь или имеешь PET проект, с которым постоянно ковыряешься. Таскать это по всем поддерживаемым серверам или тем серверам куда тебе пришлось по каким то причинам залогиниться, все равно не будешь.
У меня единственный паттерн, ломающийся при входе на сервер с bash после zsh — использование Ctrl+W. В bash он удаляет слово до предыдущего пробельного символа, а zsh все не-alphanumeric символы разделителями считает, благодаря чему вырабатывается привычка, например, последний элемент пути удалять через Ctrl+W.
Очень рекомендую к использованию plugin manager antibody https://github.com/getantibody/antibody
Быстрый, удобный и понятный.
Но, тем не менее, работает действительно быстро, вместе с асинхронной темой prompt готов к работе сразу же после вызова терминала, даже если находишься в директории с git и включено отображение информации о репе.
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Можно попробовать туда дописать env, отвечающие за отрисовку prompt, но я так не делал и не уверен что это вообще здравая идея.
Красота! Спасибо!
Сделал даже не до конца — стало уже очень красиво
Большинство дистрибутивов поставляется со встроенным Bash.
Это не так.
Цвета. Важная часть оформления терминала — цветовая схема.
Да. Зеленым по черному. Со стороны клиента.
Это не так.
Это так. Гораздо меньше дистрибутивов, где из коробки его нет, чем где он есть. И даже если в каких-то дистрибутивах уже стоит zsh/mksh, то bash там все равно есть, почти всегда. Как минимум для работы скриптов, написанных на нем.
Да. Зеленым по черному. Со стороны клиента.
habr.com/ru/post/516004/#comment_21982298
Это так. Гораздо меньше дистрибутивов, где из коробки его нет, чем где он есть.
Заведите нового пользователя и посмотрите какой у него шел. Речь об этом.
Почти во всех. Дебиан, например. В чем вообще смысл? Если у меня был bash, я создам пользователя, у меня fish появится?
sudo fc-cache -f -v
Так?
Или просто установить fish
:
Debian based дистрибутивы(с пакетным менеджером apt):
$ sudo apt-get install fish $ sudo chsh -s /bin/fish
Если нет в репозитории, повторить с предварительным выполнением:
$ sudo apt-add-repository ppa:fish-shell/release-2 $ sudo apt-get update
Arch based дистрибутивы(с пакетным менеджером pacman):
$ sudo pacman -S fish
Fedora based дистрибутивы(с пакетным менеджером dnf):
$ dnf install fish
Установка как интерпретатор по умолчанию:
$ chsh -s `which fish`
В графических терминалах ставится в основном через настройки профиля в поле "Команда" тебуется прописать
/bin/fish
илиusr/bin/fish
Без особых красот как zsh
, но есть подсветка синтаксиса и автодополнение команд и всё это по default'у.
Ссылка на официальный сайт с документацией и всем, всем, всем...
Делаем Linux терминал красивым и удобным