mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 05:24:23 +01:00
281 lines
10 KiB
Plaintext
281 lines
10 KiB
Plaintext
texinode(Prompt Expansion)(Expansion)(Conditional Expressions)(Top)
|
|
chapter(Prompt Expansion)
|
|
ifzman(\
|
|
sect(Prompt Expansion)
|
|
)\
|
|
cindex(prompt expansion)
|
|
cindex(expansion, prompt)
|
|
Prompt sequences undergo a special form of expansion. This type of expansion
|
|
is also available using the tt(-P) option to the tt(print) builtin.
|
|
|
|
pindex(PROMPT_SUBST, use of)
|
|
If the tt(PROMPT_SUBST) option is set, the prompt string is first subjected to
|
|
em(parameter expansion),
|
|
em(command substitution) and
|
|
em(arithmetic expansion).
|
|
See
|
|
ifzman(\
|
|
zmanref(zshexpn).
|
|
)\
|
|
ifnzman(\
|
|
noderef(Expansion).
|
|
)\
|
|
|
|
Certain escape sequences may be recognised in the prompt string.
|
|
|
|
pindex(PROMPT_BANG, use of)
|
|
If the tt(PROMPT_BANG) option is set, a `tt(!)' in the prompt is replaced
|
|
by the current history event number. A literal `tt(!)' may then be
|
|
represented as `tt(!!)'.
|
|
|
|
pindex(PROMPT_PERCENT, use of)
|
|
If the tt(PROMPT_PERCENT) option is set, certain escape sequences that
|
|
start with `tt(%)' are expanded.
|
|
Some escapes take an optional integer argument, which
|
|
should appear between the `tt(%)' and the next character of the
|
|
sequence. The following escape sequences are recognized:
|
|
|
|
subsect(Special characters)
|
|
startitem()
|
|
item(tt(%%))(
|
|
A `tt(%)'.
|
|
)
|
|
item(tt(%RPAR()))(
|
|
A `tt(RPAR())'.
|
|
)
|
|
enditem()
|
|
|
|
subsect(Login information)
|
|
startitem()
|
|
item(tt(%l))(
|
|
The line (tty) the user is logged in on, without `tt(/dev/)' prefix.
|
|
If the name starts with `tt(/dev/tty)', that prefix is stripped.
|
|
)
|
|
item(tt(%M))(
|
|
The full machine hostname.
|
|
)
|
|
item(tt(%m))(
|
|
The hostname up to the first `tt(.)'.
|
|
An integer may follow the `tt(%)' to specify
|
|
how many components of the hostname are desired. With a negative integer,
|
|
trailing components of the hostname are shown.
|
|
)
|
|
item(tt(%n))(
|
|
tt($USERNAME).
|
|
)
|
|
item(tt(%y))(
|
|
The line (tty) the user is logged in on, without `tt(/dev/)' prefix.
|
|
This does not treat `tt(/dev/tty)' names specially.
|
|
)
|
|
enditem()
|
|
|
|
subsect(Shell state)
|
|
startitem()
|
|
item(tt(%#))(
|
|
A `tt(#)' if the shell is running with privileges, a `tt(%)' if not.
|
|
Equivalent to `tt(%(!.#.%%))'.
|
|
The definition of `privileged', for these purposes, is that either the
|
|
effective user ID is zero, or, if POSIX.1e capabilities are supported, that
|
|
at least one capability is raised in either the Effective or Inheritable
|
|
capability vectors.
|
|
)
|
|
item(tt(%?))(
|
|
The return status of the last command executed just before the prompt.
|
|
)
|
|
item(tt(%_))(
|
|
The status of the parser, i.e. the shell constructs (like `tt(if)' and
|
|
`tt(for)') that have been started on the command line. If given an integer
|
|
number that many strings will be printed; zero or negative or no integer means
|
|
print as many as there are. This is most useful in prompts tt(PS2) for
|
|
continuation lines and tt(PS4) for debugging with the tt(XTRACE) option; in
|
|
the latter case it will also work non-interactively.
|
|
)
|
|
xitem(tt(%d))
|
|
item(tt(%/))(
|
|
Present working directory (tt($PWD)). If an integer follows the `tt(%)',
|
|
it specifies a number of trailing components of tt($PWD) to show; zero
|
|
means the whole path. A negative integer specifies leading components,
|
|
i.e. tt(%-1d) specifies the first component.
|
|
)
|
|
item(tt(%~))(
|
|
As tt(%d) and tt(%/), but if tt($PWD) has a named directory as its prefix,
|
|
that part is replaced by a `tt(~)' followed by the name of the directory.
|
|
If it starts with tt($HOME), that part is replaced by a `tt(~)'.
|
|
)
|
|
xitem(tt(%h))
|
|
item(tt(%!))(
|
|
Current history event number.
|
|
)
|
|
item(tt(%i))(
|
|
The line number currently being executed in the script, sourced file, or
|
|
shell function given by tt(%N). This is most useful for debugging as part
|
|
of tt($PS4).
|
|
)
|
|
item(tt(%j))(
|
|
The number of jobs.
|
|
)
|
|
item(tt(%L))(
|
|
The current value of tt($SHLVL).
|
|
)
|
|
item(tt(%N))(
|
|
The name of the script, sourced file, or shell function that zsh is
|
|
currently executing, whichever was started most recently. If there is
|
|
none, this is equivalent to the parameter tt($0). An integer may follow
|
|
the `tt(%)' to specify a number of trailing path components to show; zero
|
|
means the full path. A negative integer specifies leading components.
|
|
)
|
|
xitem(tt(%c))
|
|
xitem(tt(%.))
|
|
item(tt(%C))(
|
|
Trailing component of tt($PWD).
|
|
An integer may follow the `tt(%)' to get more than one component.
|
|
Unless `tt(%C)' is used, tilde contraction is performed first. These are
|
|
deprecated as tt(%c) and tt(%C) are equivalent to tt(%1~) and tt(%1/),
|
|
respectively, while explicit positive integers have the same effect as for
|
|
the latter two sequences.
|
|
)
|
|
enditem()
|
|
|
|
subsect(Date and time)
|
|
startitem()
|
|
item(tt(%D))(
|
|
The date in var(yy)tt(-)var(mm)tt(-)var(dd) format.
|
|
)
|
|
item(tt(%T))(
|
|
Current time of day, in 24-hour format.
|
|
)
|
|
xitem(tt(%t))
|
|
item(tt(%@))(
|
|
Current time of day, in 12-hour, am/pm format.
|
|
)
|
|
item(tt(%*))(
|
|
Current time of day in 24-hour format, with seconds.
|
|
)
|
|
item(tt(%w))(
|
|
The date in var(day)tt(-)var(dd) format.
|
|
)
|
|
item(tt(%W))(
|
|
The date in var(mm)tt(/)var(dd)tt(/)var(yy) format.
|
|
)
|
|
item(tt(%D{)var(string)tt(}))(
|
|
var(string) is formatted using the tt(strftime) function.
|
|
See manref(strftime)(3) for more details. Three additional codes are
|
|
available: tt(%f) prints the day of the month, like tt(%e) but
|
|
without any preceding space if the day is a single digit, and
|
|
tt(%K)/tt(%L) correspond to tt(%k)/tt(%l) for the hour of the day
|
|
(24/12 hour clock) in the same way.
|
|
)
|
|
enditem()
|
|
|
|
subsect(Visual effects)
|
|
startitem()
|
|
item(tt(%B) LPAR()tt(%b)RPAR())(
|
|
Start (stop) boldface mode.
|
|
)
|
|
item(tt(%E))(
|
|
Clear to end of line.
|
|
)
|
|
item(tt(%U) LPAR()tt(%u)RPAR())(
|
|
Start (stop) underline mode.
|
|
)
|
|
item(tt(%S) LPAR()tt(%s)RPAR())(
|
|
Start (stop) standout mode.
|
|
)
|
|
item(tt(%{)...tt(%}))(
|
|
Include a string as a literal escape sequence.
|
|
The string within the braces should not change the cursor
|
|
position. Brace pairs can nest.
|
|
)
|
|
enditem()
|
|
|
|
subsect(Conditional substrings)
|
|
startitem()
|
|
item(tt(%v))(
|
|
vindex(psvar, use of)
|
|
The value of the first element of the tt(psvar) array parameter. Following
|
|
the `tt(%)' with an integer gives that element of the array. Negative
|
|
integers count from the end of the array.
|
|
)
|
|
item(tt(%LPAR())var(x.true-text.false-text)tt(RPAR()))(
|
|
Specifies a ternary expression. The character following the var(x) is
|
|
arbitrary; the same character is used to separate the text for the
|
|
`true' result from that for the `false' result.
|
|
This separator may not appear in the var(true-text), except as part of a
|
|
%-escape
|
|
sequence. A `tt(RPAR())' may appear in the var(false-text) as `tt(%RPAR())'.
|
|
var(true-text)
|
|
and var(false-text) may both contain arbitrarily-nested escape
|
|
sequences, including further ternary expressions.
|
|
|
|
The left parenthesis may be preceded or followed by a positive integer var(n),
|
|
which defaults to zero. A negative integer will be multiplied by -1.
|
|
The test character var(x) may be any of the following:
|
|
|
|
startsitem()
|
|
sitem(tt(!))(True if the shell is running with privileges.)
|
|
sitem(tt(#))(True if the effective uid of the current process is var(n).)
|
|
sitem(tt(?))(True if the exit status of the last command was var(n).)
|
|
sitem(tt(_))(True if at least var(n) shell constructs were started.)
|
|
sxitem(tt(C))
|
|
sitem(tt(/))(True if the current absolute path has at least var(n) elements
|
|
relative to the root directory, hence tt(/) is counted as 0 elements.)
|
|
sxitem(tt(c))
|
|
sxitem(tt(.))
|
|
sitem(tt(~))(True if the current path, with prefix replacement, has at
|
|
least var(n) elements relative to the root directory, hence tt(/) is
|
|
counted as 0 elements.)
|
|
sitem(tt(D))(True if the month is equal to var(n) (January = 0).)
|
|
sitem(tt(d))(True if the day of the month is equal to var(n).)
|
|
sitem(tt(g))(True if the effective gid of the current process is var(n).)
|
|
sitem(tt(j))(True if the number of jobs is at least var(n).)
|
|
sitem(tt(L))(True if the tt(SHLVL) parameter is at least var(n).)
|
|
sitem(tt(l))(True if at least var(n) characters have already been
|
|
printed on the current line.)
|
|
sitem(tt(S))(True if the tt(SECONDS) parameter is at least var(n).)
|
|
sitem(tt(T))(True if the time in hours is equal to var(n).)
|
|
sitem(tt(t))(True if the time in minutes is equal to var(n).)
|
|
sitem(tt(v))(True if the array tt(psvar) has at least var(n) elements.)
|
|
sitem(tt(w))(True if the day of the week is equal to var(n) (Sunday = 0).)
|
|
endsitem()
|
|
)
|
|
xitem(tt(%<)var(string)tt(<))
|
|
xitem(tt(%>)var(string)tt(>))
|
|
item(tt(%[)var(xstring)tt(]))(
|
|
Specifies truncation behaviour for the remainder of the prompt string.
|
|
The third, deprecated, form is equivalent to `tt(%)var(xstringx)',
|
|
i.e. var(x) may be `tt(<)' or `tt(>)'.
|
|
The numeric argument, which in the third form may appear immediately
|
|
after the `tt([)', specifies the maximum permitted length of
|
|
the various strings that can be displayed in the prompt.
|
|
The var(string) will be displayed in
|
|
place of the truncated portion of any string; note this does not
|
|
undergo prompt expansion.
|
|
|
|
The forms with `tt(<)' truncate at the left of the string,
|
|
and the forms with `tt(>)' truncate at the right of the string.
|
|
For example, if the current directory is `tt(/home/pike)',
|
|
the prompt `tt(%8<..<%/)' will expand to `tt(..e/pike)'.
|
|
In this string, the terminating character (`tt(<)', `tt(>)' or `tt(])'),
|
|
or in fact any character, may be quoted by a preceding `tt(\)'; note
|
|
when using tt(print -P), however, that this must be doubled as the
|
|
string is also subject to standard tt(print) processing, in addition
|
|
to any backslashes removed by a double quoted string: the worst case
|
|
is therefore `tt(print -P "%<\\\\<<...")'.
|
|
|
|
If the var(string) is longer than the specified truncation length,
|
|
it will appear in full, completely replacing the truncated string.
|
|
|
|
The part of the prompt string to be truncated runs to the end of the
|
|
string, or to the end of the next enclosing group of the `tt(%LPAR())'
|
|
construct, or to the next truncation encountered at the same grouping
|
|
level (i.e. truncations inside a `tt(%LPAR())' are separate), which
|
|
ever comes first. In particular, a truncation with argument zero
|
|
(e.g. `tt(%<<)') marks the end of the range of the string to be
|
|
truncated while turning off truncation from there on. For example, the
|
|
prompt '%10<...<%~%<<%# ' will print a truncated representation of the
|
|
current directory, followed by a `tt(%)' or `tt(#)', followed by a
|
|
space. Without the `tt(%<<)', those two characters would be included
|
|
in the string to be truncated.
|
|
)
|
|
enditem()
|