Добавление команды bash в PS1 - PullRequest
0 голосов
/ 19 июня 2020

Я хотел бы добавить команду bash в командную строку. Скажем date -R, чтобы вывести текущее время. Как я могу go сделать это, а также убедиться, что это не просто так, когда придет время, когда команда будет добавлена ​​в PS1? (э-э go, когда вы нажимаете Enter в командной строке, подсказка также обновляется новым значением команды)

Ответы [ 2 ]

3 голосов
/ 19 июня 2020

Самый короткий способ - включить подстановку команды, но с экранированием, чтобы она не оценивалась, пока PS1 не отобразится .

# PS1="$(date -R) > "  would include the same date in every prompt
PS1='$(date -R) > "

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

PROMPT_COMMAND='make_prompt'
make_prompt () {
   # Just to demonstrate building up PS1 piece by piece
   PS1="$(date -R)"
   PS1+=" > "
}

Однако для этого конкретного c примера подстановка команд не требуется. Существуют уже существующие escape-последовательности для отображения даты:

# duplicating the format of date -R (RFC 2822)
PS1='\D{%a, %d %b %Y %H:%M:%S %z} > '

Внутри \D{...} вы можете использовать любую строку, которую будет обрабатывать strftime.

0 голосов
/ 19 июня 2020

Вы можете использовать переменную среды PROMPT_COMMAND для запуска команды до того, как появится PS1. Например:

export PROMPT_COMMAND="date -R"

Здесь в ~/.bashrc приглашение может выглядеть примерно так:

Wed, 17 Jun 2020 18:15:01 -0400
user@computer:~$
...