Приглашения к вводу в bash
Приглашение | Использование | По умолчанию |
---|---|---|
PS0 | Отображение информации перед выполнением команды (после нажатия клавиши Enter) в bash 4.4+ | Нет |
PS1 | Основное приглашение к вводу в Bourne/bash | '\s-\v\$ ' |
PS2 | Дополнительное приглашение к вводу в Bourne/bash; появляется после нажатия клавиши Enter при вводе текста в кавычках или встроенного документа. | '> ' |
PS3 | Приглашение, используемое встроенной командой select | '#? ' |
PS4 | Отладочный параметр bash | '+ ' |
PROMPT_COMMAND | Команда перед $PS1 |
Нет |
PS0
Отображение информации после нажатия клавиши Enter в командной строке, но до запуска команды. Может пригодиться, например, для вывода времени перед выполнением команды:
PS0='Start: \D{%Y-%m-%d_%H:%M:%S_%Z}\n'
# Результат:
root@6938423436f9:/# export PS0='Start: \D{%Y-%m-%d_%H:%M:%S_%Z}\n'
Start: 2024-01-06_16:33:23_UTC
root@6938423436f9:/#
PS1
Пример основного приглашения в bash, где будет содержаться полная информация, которую удобно копипастить в документацию или отчеты об ошибках:
export PS1='\n[\u@\h:T\l:L$SHLVL:C\!:J\j:\D{%Y-%m-%d_%H:%M:%S_%Z}]\n$PWD\$ '
# Результат:
[root@e65b45c6ef2d:T0:L1:C2:J0:2024-01-06_16:28:21_UTC]
/#
PS4
Отладочный префикс, который выводится, когда активна настройка set -x
.
Первый символ дублируется по мере необходимости для отображения уровня вложенности оболочки, поэтому для большей ясности лучше юзать символ + (который и так по дефолту стоит).
Пример такого информативного префикса:
export PS4='+xtrace $BASH_SOURCE:$LINENO:$FUNCNAME: '
PROMPT_COMMAND
Используется для самых разных вещей, таких как обновление заголовка окна для терминалов с графическим интерфейсом, отображение динамических сведений о среде (например, текущая ветка git) или даже для примитивной и небезопасной регистрации.
Пример для журналирования:
export PROMPT_COMMAND='logger -p local1.notice -t "bashlog[$$];" "SSH=$SSH_CONNECTION; USER=$USER; PATH=$PWD; COMMAND=$(fc -ln -1)"'
Соус: Книга "Идиомы Bash" --> Глава 10. "Помимо идиом: работа с bash" --> "Приглашения к вводу"