Sök…


Syntax

  • export PS1 = "något" # visas när bash väntar på att ett kommando ska skrivas in
  • export PS2 = "anotherthing" # dsplayed när uttalandet sträcker sig till fler rader
  • export PS3 = "Frågeformulär för utvalda uttalanden" # används sällan prompt för att välja. Ställ först PS3 efter dina behov och ring sedan välj . Se hjälpval
  • export PS4 = "mestadels användbart för felsökning; radnummer och så vidare" # används för felsökning av bash-skript.

parametrar

Fly detaljer
\ en En klockatecken.
\ d Datumet i formatet "Veckodagsmånad" (t.ex. "tisdag 26 maj").
\ D {FORMAT} FORMAT skickas till 'stretime' (3) och resultatet infogas i prompsträngen; en tom FORMAT resulterar i en lokalspecifik tidsrepresentation. Hängslen krävs.
\ e En flyktecken. \ 033 fungerar naturligtvis också.
\ h Värdnamnet, upp till det första `. '. (dvs. ingen domändel)
\ H Värdnamnet så småningom med domändel
\ j Antalet jobb som för närvarande hanteras av skalet.
\ l Basnamnet på skalets terminalenhetsnamn.
\ n En ny linje.
\ r En vagn tillbaka.
\ s Namnet på skalet, basnamnet på "$ 0" (delen efter den sista snedstrecken).
\ t Tiden, i 24-timmars HH: MM: SS-format.
\ T Tiden, i 12-timmars HH: MM: SS-format.
@ Tiden, i 12-timmarsformat.
\ A Tiden, i 24-timmars HH: MM-format.
\ u Användarnamnet för den aktuella användaren.
\ v Versionen av Bash (t.ex. 2.00)
\ V Släppandet av Bash, version + patchlevel (t.ex. 2.00.0)
\ w Den nuvarande arbetskatalogen, med $ HOME förkortad med en tilde (använder $ PROMPT_DIRTRIM-variabeln).
\ W Basnamnet på $ PWD, med $ HOME förkortat med en tilde.
! Historiknumret för detta kommando.
# Kommandonummeret för detta kommando.
$ Om den effektiva uid är 0, # , annars $ .
\ NNN Karaktären vars ASCII-kod är det oktala värdet NNN.
\ Ett bakslag.
\ [ Börja en sekvens med tecken som inte skrivs ut. Detta kan användas för att bädda in en terminalstyrsekvens i prompten.
\] Avsluta en sekvens med tecken som inte skrivs ut.

Använda variabel PROMPT_COMMAND envrionment

När det sista kommandot i en interaktiv bash-instans är klar visas den utvärderade PS1-variabeln. Innan PS1 bash faktiskt visas om PROMPT_COMMAND är inställt. Detta värde måste vara ett kalibrerbart program eller skript. Om denna var ställts in kallas programmet / skriptet FÖR PS1-prompten visas.

# 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

Med PS2

PS2 visas när ett kommando sträcker sig till mer än en rad och bash väntar på fler tangenttryckningar. Det visas också när ett sammansatt kommando som medan ... gör .. gjort och lika anges.

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

Med PS3

När markeringssatsen körs, visas de angivna artiklarna i förväg med ett nummer och visar sedan PS3-prompten:

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

Med PS4

PS4 visas när bash är i felsökningsläge.

#!/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' )

Med PS1

PS1 är den normala systemprompt som indikerar att bash väntar på att kommandon ska skrivas in. Den förstår vissa escape-sekvenser och kan utföra funktioner eller program. Eftersom bash måste placera markören efter visningspressen måste den veta hur man beräknar den effektiva längden på prompsträngen. För att indikera icke-utskriftssekvenser av tecken i PS1-variabeln som undviks hängslen används: \ [ en icke utskriftssekvens av tecken \] . Allt sagt gäller för alla PS * vars.

(Den svarta karet indikerar markören)

#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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow