Введение

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

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

Я надеюсь, что смогу помочь упростить задачу настройки вашей подсказки и предоставить полезную справку о том, что вы можете сделать с терминалом bash.

Где хранится переменная PS1?

Если вы совсем не знакомы с bash, вас может немного сбить с толку, когда кто-то скажет заглянуть в файл конфигурации. Первой проблемой может быть даже поиск файла из-за того, что файлы конфигурации bash начинаются с точки, что делает их невидимыми в файловом браузере. Самый простой способ найти этот файл в Linux, Mac и WSL — открыть терминал и убедиться, что вы находитесь в своем домашнем каталоге. Самый простой способ убедиться, что вы находитесь в правильном месте, это запустить cd без аргументов, это по умолчанию приведет вас в ваш домашний каталог.

Как только вы окажетесь в нужном месте, запустите команду ls -a. Это покажет вам все файлы в вашем рабочем каталоге, включая скрытые файлы. Файл, с которым мы будем работать, — это файл .bashrc, который является исходным файлом bash каждый раз, когда терминал открывается для его настройки.

Чтобы открыть этот файл, используйте любой удобный текстовый редактор и откройте файл .bashrc. Vim, Nano, VSCode, Sublime Text и Atom — все это легкодоступные и качественные текстовые редакторы. Обычно в текстовых редакторах есть команды, которые открывают файл прямо из терминала; vim .bashrc, code .bashrc, nano .bashrc например.

Основы

После того, как вы нашли файл и открыли его в своем любимом текстовом редакторе, вы захотите найти строку с export PS1="some crazy looking code", если у вас нет строки, которая определяет вашу переменную PS1, напишите ее. Просто убедитесь, что между именем переменной (PS1), знаком равенства и кавычками, которые будут определением подсказки, нет пробела.

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

Вот список опций, как это показано в bash manual

  • \a : Символ колокольчика.
  • \d : Дата в формате «День недели, месяц, дата» (например, «Вторник, 26 мая»).
  • \D{format} : Формат передается в strftime(3) и результат вставляется в строку подсказки; пустой формат приводит к представлению времени в зависимости от локали. Брекеты обязательны.
  • \e : escape-символ.
  • \h : Имя хоста, до первой «.».
  • \H : Имя хоста.
  • \j : количество заданий, которыми в настоящее время управляет оболочка.
  • \l : Базовое имя терминального устройства оболочки.
  • \n : перевод строки.
  • \r : Возврат каретки.
  • \s : Имя оболочки, базовое имя $0 (часть после последней косой черты).
  • \t : время в 24-часовом формате ЧЧ:ММ:СС.
  • \T : время в 12-часовом формате ЧЧ:ММ:СС.
  • \@ : Время в 12-часовом формате am/pm.
  • \A : время в 24-часовом формате ЧЧ:ММ.
  • \u : Имя текущего пользователя.
  • \v : Версия Bash (например, 2.00).
  • V : выпуск Bash, версия + уровень исправления (например, 2.00.0).
  • \w : текущий рабочий каталог с $HOME, сокращенно тильдой (используется переменная $PROMPT_DIRTRIM).
  • \W : Базовое имя $PWD с сокращением $HOME с тильдой.
  • \! : Номер истории этой команды.
  • \# : Номер этой команды.
  • \$ : Если эффективный uid равен 0, #, иначе $.
  • \nnn : Символ, код ASCII которого представляет собой восьмеричное значение nnn.
  • \ : обратная косая черта.
  • \[ : Начать последовательность непечатаемых символов. Это можно использовать для встраивания последовательности управления терминалом в подсказку.
  • \] : Конец последовательности непечатаемых символов.

Вот несколько простых примеров того, как это можно построить.

Помните, что каждый раз, когда вы изменяете переменную PS1, чтобы увидеть изменение, вам нужно либо закрыть и снова открыть терминал, либо выполнить эту команду source ~/.bashrc. Это заставит bash перезагрузить конфигурацию.

Подсказка только с пользователем.

export PS1="\u "

Подсказка с пользователем и полным путем, разделенными знаком @.

export PS1="\u @ \w "

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

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

export PS1="[\d / \@] "

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

export PS1="[\d / \@] \W "

Я предпочитаю многострочные подсказки, потому что это дает мне больше места для написания более длинных команд без переноса и не требует уменьшения объема информации, отображаемой в подсказке. Вы можете вставить новую строку, экранировав c У меня есть символ стрелки, означающий, что здесь будут появляться команды, которые я набираю.

export PS1="[\d / \@] \W\n[=>] "

Далее мы добавим забавные части!

Отображение текущей ветки Git

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

function parse_git_branch {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

Вы можете добавить это прямо в файл .bashrc.

function parse_git_branch {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1="[\d / \@] \W \$(parse_git_branch)\n[=>] "

Добавление цвета к вашей подсказке

Добавление цвета к вашей подсказке может добавить индивидуальности и упростить распознавание информации, которую вы ищете, с первого взгляда. Вот коды цветов переднего плана bash.

  • Черный: 30
  • Синий: 34
  • Голубой: 36
  • Зеленый: 32
  • Фиолетовый: 35
  • Красный: 31
  • Белый: 37
  • Желтый: 33

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

Цветовые коды должны быть заключены в непечатаемые символьные символы. \[ и \], чтобы они работали правильно и не вызывали раздражающих проблем с переносом строк в вашем терминале.

Вот раскрашенная версия подсказки, над которой мы работали до сих пор!

green="\[\e[32m\]"
purple="\[\e[35m\]"
blue="\[\e[36m\]"
white="\[\e[00m\]"
function parse_git_branch {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1="${green}[\d / \@] ${purple}\W ${blue}\$(parse_git_branch)\n${green}[=>]${white} "

Вывод

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

Загляните в мой личный блог!