3

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

Вещи, которые я скучаю больше всего:

  • поддержка автозаполнения: fish запоминает все мои команды, выполняет дополнения по частичным (иногда огромным) командам, кажется, понимает все приложения cmd-line, которые я использую, и предлагает дополнения по их командам и т. д. Для каждой команды fish отображается затемненным цветом команда будет автоматически завершена, если бы я нажал Tab.
  • Поддержка git: fish показывает мне, нахожусь ли я в репозитории github, название ветки, и была ли она изменена или очищена с использованием красивых цветов рядом с моим именем пользователя @ hostname, я бы тоже хотел, чтобы это было на bash

2 ответа2

3

Существует много вариантов настройки bash . Я использую следующие команды для облегчения доступа к истории команд:

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

Они устанавливают стрелки вверх и вниз для сканирования вверх и вниз по истории команд для команд , начинающихся с символов перед курсором в командной строке (как TCC делает в Windows).

Что касается приглашения, вы можете вводить команды, которые будут запускаться при каждом выводе приглашения. Я использую:-

PS1="\`curspos -n>/dev/tty\`\`[ \$BASH_LEVEL != 1 ]&&echo \"[\$BASH_LEVEL]\"\`\\t[\\w/]\\\$ "

Это вызывает две команды в каждой строке:

  • curspos - это скрипт, который я написал для проверки положения курсора и вывода новой строки, если не в первом столбце (меня раздражают ненужные пустые строки).
  • Проверки BASH_LEVEL предшествуют подсказке с уровнем в квадратных скобках, если он не равен 1, поэтому сразу видно, что вы находитесь в дочерней оболочке (например, [2]15:55:32[~/]$).

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

В заключение я хотел бы прокомментировать, что fish доступен во многих дистрибутивах Linux (например, в репозитории Ubuntu), поэтому вам нужно выполнять эти настройки bash только в том случае, если вы не можете устанавливать пакеты.

2

Что касается автозаполнения, bash использует GNU Readline, чтобы обеспечить завершение табуляции, а также поиск и завершение истории. Завершение с помощью вкладок работает для имен команд, файлов и - для любых команд, имеющих сценарии завершения - параметров и аргументов. Используйте Вверх или Вниз, чтобы перемещаться по истории линейно; или, чтобы выполнить поиск, введите Ctrl + R и любую часть команды, которую вы помните. Readline устанавливается почти везде, особенно в современных ОС.

Чтобы ответить на ваши вопросы по Git, сам Git включает в себя сценарии для раскрашивания приглашения, выполнения табуляции для оболочки bash и других. Когда я установил Git для Windows, программа bash, поставляемая с ним, была предварительно подготовлена для их автоматического использования.

Если вы знакомы с bash, то, вероятно, нетрудно добавить подсказку git на Mac. Bash генерирует подсказку из содержимого переменной PS1 . Это позволяет вам выполнить произвольную функцию для генерации частей приглашения, что позволяет запускать эти умные сценарии. Как и другие оболочки, bash полагается на базовый эмулятор терминала для получения цвета. Он просто передает текст, заданный вами для приглашения, в эмулятор терминала. Просто добавьте правильные коды ANSI в подсказку PS1 , и вы получите цветной вывод.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .