Поиск…


Синтаксис

  • export PS1 = «something» # отображается, когда bash ожидает команду, которую нужно ввести в
  • экспорт PS2 = "anotherthing" # dsplayed, когда оператор распространяется на большее количество строк
  • export PS3 = «запрос вопроса для оператора выбора» # редко используется приглашение для выбора. Сначала установите PS3 в соответствии с вашими потребностями, затем выберите select . См. Help select
  • экспорт PS4 = «в основном полезен для отладки, номер строки и т. д.» # используется для отладки сценариев bash.

параметры

Побег подробности
\ а Символ колокола.
\ d Дата в формате «День недели» (например, «Вторник 26 мая»).
\ D {FORMAT} FORMAT передается в `strftime '(3), и результат вставляется в строку приглашения; пустой FORMAT приводит к представлению времени, специфичному для локали. Требуются скобки.
\ е Управляющий символ. \ 033 тоже конечно.
\час Имя хоста, до первого `. '. (т. е. не доменная часть)
\ЧАС Имя хоста в конечном итоге с доменной частью
\ J Количество рабочих мест, которыми в настоящее время управляет оболочка.
\ л Базовое имя имени терминала терминала.
\ п Новая строка.
Возврат кареты.
\ s Имя оболочки, базовое имя `$ 0 '(часть, следующая за последней косой чертой).
\ т Время в 24-часовом формате HH: MM: SS.
\ T Время в 12-часовом формате HH: MM: SS.
@ Время, в 12-часовом формате am / pm.
\ A Время в 24-часовом формате HH: MM.
\ и Имя пользователя текущего пользователя.
\ v Версия Bash (например, 2.00)
\ V Выпуск Bash, версия + patchlevel (например, 2.00.0)
\ ш Текущая рабочая директория с $ HOME сокращена тильдой (используется переменная $ PROMPT_DIRTRIM).
\ W Базисное имя $ PWD, с $ HOME сокращенно с тильдой.
! Номер истории этой команды.
# Номер команды этой команды.
$ Если эффективный uid равен 0, # , в противном случае $ .
\ NNN Символ, код ASCII которого является восьмеричным значением NNN.
\ Обратная косая черта.
\ [ Начните последовательность непечатаемых символов. Это можно использовать для встраивания управляющей последовательности терминала в приглашение.
\] Завершите последовательность непечатаемых символов.

Использование переменной PROMPT_COMMAND envrionment

Когда выполняется последняя команда в экземпляре интерактивного баха, отображается оценочная переменная PS1. Перед тем, как фактически показать PS1 bash, будет ли установлен PROMPT_COMMAND. Это значение этого var должно быть вызываемой программой или скриптом. Если этот var задан, эта программа / сценарий вызывается до того, как отобразится приглашение PS1.

# just a stupid function, we will use to demonstrate
# we check the date if Hour is 12 and Minute is lower than 59
lunchbreak(){ 
   if (( $(date +%H) == 12 && $(date +%M) < 59 )); then 
      # and print colored \033[ starts the escape sequence 
      # 5; is blinking attribute
      # 2; means bold
      # 31 says red
      printf "\033[5;1;31mmind the lunch break\033[0m\n";
   else
      printf "\033[33mstill working...\033[0m\n"; 
   fi; 
}

# activating it
export PROMPT_COMMAND=lunchbreak

Использование PS2

PS2 отображается, когда команда распространяется на несколько строк, и bash ожидает больше нажатий клавиш. Он также отображается, когда вводится составная команда, например , ... do..done и аналогично .

export PS2="would you please complete this command?\n" 
# now enter a command extending to at least two lines to see PS2

Использование PS3

Когда оператор select выполняется, он отображает данные, предваряемые номером, и затем отображает приглашение PS3:

export PS3="  To choose your language type the preceding number : "
select lang in EN CA FR DE; do
   # check input here until valid.
   break
done

Использование PS4

PS4 отображается, когда bash находится в режиме отладки.

#!/usr/bin/env bash

# switch on debugging
set -x

# define a stupid_func
stupid_func(){
   echo I am line 1 of stupid_func
   echo I am line 2 of stupid_func
}

# setting the PS4 "DEBUG" prompt
export PS4='\nDEBUG level:$SHLVL subshell-level: $BASH_SUBSHELL \nsource-file:${BASH_SOURCE} line#:${LINENO} function:${FUNCNAME[0]:+${FUNCNAME[0]}(): }\nstatement: '

# a normal statement
echo something

# function call
stupid_func

# a pipeline of commands running in a subshell 
( ls -l | grep 'x' )

Использование PS1

PS1 - это обычное системное приглашение, указывающее, что bash ожидает ввода команд. Он понимает некоторые escape-последовательности и может выполнять функции или прогаммы. Поскольку bash должен позиционировать курсор после подсказки displayes, он должен знать, как вычислить эффективную длину строки подсказки. Для указания непечатаемых последовательностей символов в переменной PS1 используются экранированные скобки: \ [ непечатная последовательность символов ] . Все сказанное верно для всех PS * vars.

(Черная каретка указывает курсор)

#everything not being an escape sequence will be literally printed
export PS1="literal sequence "  # Prompt is now:
literal sequence ▉

# \u == user \h == host \w == actual working directory
# mind the single quotes avoiding interpretation by shell
export PS1='\u@\h:\w > ' # \u == user, \h == host, \w actual working dir
looser@host:/some/path > ▉

# executing some commands within PS1
# following line will set foreground color to red, if user==root, 
# else it resets attributes to default
# $( (($EUID == 0)) &&  tput setaf 1)
# later we do reset attributes to default with
# $(  tput sgr0 )
# assuming being root:
PS1="\[$( (($EUID == 0)) &&  tput setaf 1 \]\u\[$(tput sgr0)\]@\w:\w \$ "
looser@host:/some/path > ▉  # if not root else <red>root<default>@host....    


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow