Bash
Manejando el indicador del sistema
Buscar..
Sintaxis
- export PS1 = "algo" # se muestra cuando bash espera un comando para que se escriba
- exportar PS2 = "algo" # se muestra cuando la instrucción se extiende a más líneas
- export PS3 = "solicitud de pregunta para la instrucción de selección" # # rara vez se utiliza la solicitud para seleccionar. Primero configura la PS3 según tus necesidades, luego selecciona Call. Ver ayuda seleccionar
- export PS4 = "principalmente útil para la depuración; número de línea y así sucesivamente" # utilizado para depurar scripts de bash.
Parámetros
Escapar | Detalles |
---|---|
\una | Un personaje de campana. |
\re | La fecha, en formato "Fecha del mes de la semana" (por ejemplo, "Mar 26 de mayo"). |
\ D {FORMATO} | El FORMATO se pasa a `strftime '(3) y el resultado se inserta en la cadena de solicitud; un FORMATO vacío da como resultado una representación temporal específica de la localidad. Los tirantes son necesarios. |
\mi | Un personaje de escape. \ 033 funciona por supuesto también. |
\ h | El nombre de host, hasta el primer `. '. (es decir, ninguna parte de dominio) |
\ H | El nombre de host finalmente con parte de dominio |
\ j | El número de trabajos actualmente gestionados por el shell. |
\ l | El nombre base del nombre del dispositivo terminal del shell. |
\norte | Una nueva línea. |
\ r | Un retorno de carro. |
\ s | El nombre del shell, el nombre base de `$ 0 '(la parte que sigue a la barra final). |
\ t | La hora, en formato HH: MM: SS las 24 horas. |
\ T | La hora, en formato HH: MM: SS de 12 horas. |
@ | La hora, en formato de 12 horas am / pm. |
\UNA | La hora, en formato HH: MM 24 horas. |
\ u | El nombre de usuario del usuario actual. |
\ v | La versión de Bash (por ejemplo, 2.00) |
\ V | El lanzamiento de Bash, version + patchlevel (por ejemplo, 2.00.0) |
\ w | El directorio de trabajo actual, con $ HOME abreviado con una tilde (utiliza la variable $ PROMPT_DIRTRIM). |
\ W | El nombre base de $ PWD, con $ HOME abreviado con una tilde. |
! | El número de historial de este comando. |
# | El número de comando de este comando. |
PS | Si el uid efectivo es 0, # , de lo contrario $ . |
\ NNN | El carácter cuyo código ASCII es el valor octal NNN. |
\ | Una barra invertida. |
\ [ | Comience una secuencia de caracteres no imprimibles. Esto podría usarse para incrustar una secuencia de control de terminal en el indicador. |
\] | Finaliza una secuencia de caracteres no imprimibles. |
Usando la variable de entorno PROMPT_COMMAND
Cuando se realiza el último comando en una instancia de bash interactiva, se muestra la variable PS1 evaluada. Antes de mostrar el bash de PS1, se muestra si PROMPT_COMMAND está configurado. Este valor de esta var debe ser un programa o script invocable. Si se establece esta var, este programa / script se llama ANTES de que se muestre el indicador 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
Usando ps2
PS2 se muestra cuando un comando se extiende a más de una línea y bash espera más pulsaciones. También se muestra cuando se ingresa un comando compuesto como while ... do..done y por igual.
export PS2="would you please complete this command?\n"
# now enter a command extending to at least two lines to see PS2
Usando ps3
Cuando se ejecuta la instrucción de selección, muestra los elementos dados con un número y luego muestra el indicador de 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
Usando ps4
PS4 se muestra cuando bash está en modo de depuración.
#!/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' )
Usando ps1
PS1 es el indicador de sistema normal que indica que bash espera a que se ingresen los comandos. Entiende algunas secuencias de escape y puede ejecutar funciones o programas. Como bash tiene que posicionar el cursor después de que aparezca el indicador, debe saber cómo calcular la longitud efectiva de la cadena del indicador. Para indicar que no se imprimen secuencias de caracteres dentro de la variable PS1, se utilizan llaves de escape: \ [ una secuencia de caracteres no imprimible \] . Todo lo que se dice es válido para todos los PS * vars.
(El cursor negro indica cursor)
#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....