Intérprete de Comandos Script

80
1 Intérprete de Comandos Script Kepa Bengoetxea

Transcript of Intérprete de Comandos Script

Page 1: Intérprete de Comandos Script

1

Intérprete de ComandosScript

Kepa Bengoetxea

Page 2: Intérprete de Comandos Script

1

Referencia:

• http://www.tldp.org/LDP/abs/html/• http://www.e-ghost.deusto.es/docs/shellScriptin.html• man bash• http://es.tldp.org/Manuales-LuCAS/blfs-es/blfs-es-5.0/postlfs/profile.html

Page 3: Intérprete de Comandos Script

1

Emulador de Terminal

• Emulador de terminal:Un emulador de terminal es un programa informático que simula el funcionamiento de un terminal de un ordenador central a través de una red de telecomunicaciones entre dicho ordenador central y el ordenador que ejecuta el emulador de terminal

• Existen diferentes “emuladores de terminal”:

– El emulador de terminal por excelencia es Telnet

– En los ordenadores personales destacan PuTTY y ssh– Para el escritorio Gnome: gnome-terminal– Para sistema de ventanas X Window System: xterm

Page 4: Intérprete de Comandos Script

1

Emulador de Terminal

• Uso emulador de Terminal:– Acceder a un shell de UNIX – Se limitan a enviar y recibir caracteres de texto a través de

una red de comunicaciones. Los caracteres enviados se corresponden con pulsaciones en el teclado y los caracteres recibidos corresponden con la pantalla visualizada. Lo único que los diferencia es el tipo de terminal físico emulado. Dos modelos básicos:VT-100 y 3270

Page 5: Intérprete de Comandos Script

1

Shell o Intérprete de Comandos

• Un shell es un programa que interpreta y ejecuta los comandos que el usuario escribe en un indicador de línea de comandos. Cuando inicie una terminal la aplicación activará el shell predeterminado especificado en la cuenta del sistema.

Page 6: Intérprete de Comandos Script

1

Shell o Intérprete de Comandos

• Tipos:– Sh: Bourne shell– Csh:C shell. Ampliación sh con particularidades del

lenguaje C.– Bash: GNU Bourne-Again shell. Linux (defecto). Parecido

al sh. Sigue el standard IEEE POSIX(Portable Operating System Interface X de Unix, se traduce en, Sistema Operativo Portable basado en UNIX)

– Tcsh:Es la versión csh para Linux.• Cada usuario tiene un shell por defecto, que se asocia a la

hora de crear el usuario.

Page 7: Intérprete de Comandos Script

1

Shell o Intérprete de Comandos• Un Interprete de Comandos “bash” es un aplicación de

usuario, no es parte del kernel(Si hacemos make xconfig no aparece por ningún lado. )

$dpkg-query -l bash->bash

3.2-0ubuntu7

$ dpkg-query -L bash

/bin/bash

/etc/skel/.bashrc

/etc/skel/.profile

/etc/skel/.bash_logout

rpm -qf /bin/bash ->bash-2.05b-38

$rpm -ql bash

/bin/bash

/bin/bash2

/bin/sh

/etc/skel/.bash_logout

/etc/skel/.bash_profile

/etc/skel/.bashrc ...

Page 8: Intérprete de Comandos Script

1

Shell o Intérprete de Comandos

• Intérpretes de comandos: Command.com, bash...• Su funcionamiento es:

•Lee la entrada introducida por el usuario •Comprueba si el comando es

1.-un comando interno (Ejm:/bin/ls)2.-un alias (alias dir='ls')3.-un programa ejecutable(./principal.exe)

buscando en los caminos de su “echo $PATH”, si no lo encuentra dará un error.•Si lo encuentra,lo ejecuta. Si no es un comando o un programa dará error.

Page 9: Intérprete de Comandos Script

1

Curiosidades:

• Historial de comandos: – history: muestra los comandos ejecutados por el usuario

asociados a un número– !nº : ejecuta el comando de dicho número.– Tecla arriba: ejecuta el último comando ejecutado.

• Uso del tabulador: ap [tab] rellena con apache

Page 10: Intérprete de Comandos Script

1

Curiosidades:

• Uso ?,*,[]: – grep 4 *– grep 4 ???eba– grep 4[1-3] prueba

414243

– grep [Kk]epa prueba– grep 4[13] prueba

4143

Page 11: Intérprete de Comandos Script

1

Creación de un ScriptScript->Es un fichero de comandos.1. Editar:$vi ejemplo

#crea un directorio ’lana’ y muestra sus ficheros ocultosmkdir lanacd lanals –a

2. $chmod u+rx ejemplo3. #copy ejemplo /usr/local/bin/4. $ejemplo Nota: ./ejemplo si el script no está en los caminos del

PATH (mirar con echo $PATH)

Page 12: Intérprete de Comandos Script

1

Entorno y Variables#echo $SHELL ->/bin/bash#vi mensaje

echo “Estás en un curso de A.S.O: $nombre”#nombre=”Linux”#./mensaje#?#echo $nombre#?#export nombre #./mensaje#?Abre una nueva terminal:gnome-terminal#./mensaje

Page 13: Intérprete de Comandos Script

1

Entorno y Variables

./mensaje ->Llamada a una bash hijo, que ejecuta dicho script.

#vi mensajesleep 15

# chmod 700 mensaje

(Antes de ejecutar)

# ps -lFF S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME

CMD

0 S kepa 3860 3858 0 76 0 - 1099 wait4 1244 0 18:14 pts/2 00:00:00 bash

0 R kepa 4093 3860 0 77 0 - 563 - 748 0 22:23 pts/2 00:00:00 ps -lF

Page 14: Intérprete de Comandos Script

1

Entorno y Variables

(Después de ejecutar)#./mensaje &[1] 4100

# ps -lFF S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME

CMD

0 S kepa 3860 3858 0 75 0 - 1099 wait4 1248 0 18:14 pts/2 00:00:00 bash

1 S kepa 4100 3860 0 75 0 - 1099 wait4 1252 0 22:26 pts/2 00:00:00 bash

0 S kepa 4101 4100 0 77 0 - 933 - 480 0 22:26 pts/2 00:00:00 sleep 20

0 R kepa 4102 3860 0 78 0 - 563 - 748 0 22:26 pts/2 00:00:00 ps -lF

Page 15: Intérprete de Comandos Script

1

Entorno y Variables

• 3 zonas de memoria:

– Área de datos locales al shell– Área de datos globales al shell– Área de datos globales a todos los shell

Page 16: Intérprete de Comandos Script

1

Entorno y Variables

• Área de datos locales:

– Sólo es accesible en ese shell– Ningún subproceso(hijo) que se genere puede

acceder a él– Uso: Mientras se ejecuta el proceso– Se crea con: nom-variable-local=X– Se borra con:unset nom-variable-local

Page 17: Intérprete de Comandos Script

1

Entorno y Variables

• Área de datos globales al shell:

– Accesibles para tu bash y los hijos de ese bash. Si abres otro shell o terminal no vale!

– Crear: export nombre=”Linux” ó nombre=”Linux” y export nombre

– Borrar: export –n nombre

Page 18: Intérprete de Comandos Script

1

Entorno y Variables

• Área de datos globales a todos los shell:– Accesibles durante toda la sesión– Uso: Conocer las características de la sesión como: tipo

de terminal, rutas de búsqueda, directorio de presentación, indicativo de sistema etc...

– Editando /etc/profile; $HOME/.bashrc; $HOME/.bash_profile

#vi .bash_profilePATH=$PATH:$HOME/binexport PATH

Page 19: Intérprete de Comandos Script

1

Entorno y Variables:Comandos

• set: Muestra la lista de variables locales definidas.• env:Muestra las variables globales o de entorno. Son

utilizadas por el sistema pero están a disposición del usuario.

• HOME: Contiene cual es dir.trabajo• PATH: Contiene lista de directorios a buscar• CDPATH:Contiene una lista de directorios a los que

podremos acceder sin añadir su path.• PPID:Contiene el identificador de proceso padre• PWD: el path del directorio donde estoy

Page 20: Intérprete de Comandos Script

1

Entorno y VariablesComandos:echo

• SHLVL: Indica el nivel de anidación de intérpretes de comandos invocados.

• RANDOM: devuelve un número aleatorio.• SECONDS: muestra los segundos desde que se invocó.

• echo:Muestra el contenido(variable o texto)• echo $HOME

– >/home/kepa• echo –e "el contenido de mi carpeta:\n `ls -a` "

Nota:La opción -e permite incluir carac-s escape y comandos entre comillas graves dentro de texto con comillas dobles (` es la tecla de donde esta el [)

Page 21: Intérprete de Comandos Script

1

Entorno y Variables

• Las variables en el bash son sin tipo, son una lista de caracteres que permite operaciones aritméticas si todos los caracteres son dígitos.

• Ejm:a=1a=`expr $a + 1`echo "$a"a="b"echo `expr $a + 1`

$ ./pru 2expr: argumento no numérico

Page 22: Intérprete de Comandos Script

1

Comandos:echo

• echo– Caracteres escape:

– \c evita el salto de línea– \n inserta un salto de línea– \f inserta un salto de página– \t inserta un tabulador– \v inserta un tabulador vertical– \b código de retroceso– \r retorno de carro– \nnnn genera el código ASCII del número octal

Page 23: Intérprete de Comandos Script

1

Comandos:echoCaracteres especiales (*,$,\,?,etc) son interpretados antes de pasarlos a echo, para controlar que tengan efecto o no se utilizan:

– Comillas simples(‘): Impide la interpretación» echo ‘$BEGO‘ ->$BEGO

– Comillas graves(`): Lo interpreta como comando» echo –e " mi carpeta:\n `cd` “ ->/home/kepa

– Comillas dobles("): Permite la intepretación de $,\, comillas simples, comillas dobles

» echo "$HOME“ ->/home/kepa– \ Elimina el significado del sgte carácter

» echo "\$HOME"->$HOME

Page 24: Intérprete de Comandos Script

1

Estructuras de Control:test

• test: permite realizar comparaciones entre valores y variables, así como una serie de chequeos sobre ficheros– Comparar dos cadenas:

$test “hola” = “hola”echo $?0$test “hola” = “hola1”echo $?1

Page 25: Intérprete de Comandos Script

1

Estructuras de Control:test– Comparar dos variables: cadenas

nomvar1=”kaixo”nomvar=”kaixo”test $nomvar = $nomvar1echo $?0

– Comparar dos variables: númerosnum1=1num2=1test $num1 = $num2echo $?0

Page 26: Intérprete de Comandos Script

1

Estructuras de Control:test

– Tratamiento de cadenas:• test $cad1 = $cad2• test $cad1 != $cad2• test -z $cad #verdadero si cad esta vacía• test -n $cad #verdadero si cad no es nula• test $cad #verdadero si cad no es nula

– Tratamiento de expresiones numéricas:• test $num1 -eq $num2• test $num1 -ne $num2• test $num1 -lt $num2• test $num1 -le $num2• test $num1 -gt $num2• test $num1 -ge $num2

Page 27: Intérprete de Comandos Script

1

Estructuras de Control:test• Tratamiento de Ficheros:

Ejm: nomfich="prueba.txt" test -f $nomfich

echo $? -> 0 – Retorna true(0) si...test -e $nomfich #si existe el fichtest -f $nomfich #si es fich normal (no un dir o un

dispositivo)test -s $nomfich #si su tamaño es distinto de 0test -d $nomfich #si es directoriotest -b $nomfich #si es un disp. de bloque (fd0,hda, ...)

Page 28: Intérprete de Comandos Script

1

Estructuras de Control:test

• Tratamiento de Ficheros: test -c $nomfich #si es un disp. de carácter (keyboard,

modem, sound card, etc.)test -p $nomfich #si es una tuberíatest -h/-L $nomfich #si es un enlace simbólicotest -S $nomfich #si es un sockettest -r $nomfich #si tienes permiso de lecturatest -w $nomfich # si tienes permiso de escrituratest -x $nomfich # si tienes permiso de ejecucióntest -O $nomfich # si eres el propietario

Page 29: Intérprete de Comandos Script

1

Estructuras de Control:test

• Opciones Fichero: Retorna true si...test -G $nomfich #si pertenece al grupo del ficherotest -N $nomfich #si ha sido modificado desde la última

vez que lo leístetest $nomfich1 -nt $nomfich2 #Si $nomfich1 es más

reciente que $nomfich2test $nomfich1 -ot $nomfich2 #Si $nomfich1 es posterior

a $nomfich2test $nomfich1 -ef $nomfich2 #Si $nomfich1 y $nomfich2 son enlaces duros del mismo fichero

Page 30: Intérprete de Comandos Script

1

Estructuras de Control:test

• Opciones:– ! expr devuelve valor booleano contrario a la expr– expr1 -a expr2 es un AND– expr1 -o expr2 es un OREjm:y=1x=1if test $x -eq 1 -a $y -eq 1then echo "iguales"fi

Page 31: Intérprete de Comandos Script

1

Estructuras de Control:test

– Ejemplo:if test -e $1then echo "El fichero $1 existe"else echo "El fichero $1 no existe"fi

Page 32: Intérprete de Comandos Script

1

Comandos:read

• read: Permite la introducción de valores a través de un guión.

echo "introduce un directorio"

read dir

if test -d $dir

then

echo "El contenido del directorio es $dir"

echo "`ls $dir`"

fi

Page 33: Intérprete de Comandos Script

1

Comandos:expr• Trabajar con números: expr

echo `expr 2 + 200` -> 202expr 4 \* 2expr 4 \> 2expr 4 % 2expr 4 \>= 2expr 4 / 2Nota: \ para evitar mezclar con los caracteres

especiales: *(cualquier carc),>,< (redireccionamiento)....

Page 34: Intérprete de Comandos Script

1

Comandos:expr

• Ejm1: $vi pru

echo "Introduce dos números:"read n1 n2echo "La suma es `expr $n1 + $n2` "

$ chmod u+x pru$ ./pruIntroduce dos números:2 5La suma es 7

Page 35: Intérprete de Comandos Script

1

Comandos:expr

• Ejm2:$vi pru

echo "Introduce dos números:"read n1 n2echo "La multiplicación es `expr $n1 \* $n2` "

$ chmod u+x pru$ ./pruIntroduce dos números:2 5La multiplicación es 10

Page 36: Intérprete de Comandos Script

1

Estructura de Control: números y [ ]

• Otra manera de trabajar con números: [ ]if [ $valor1 -eq(=) $valor2 ] then

echo $valor1fi

Dejar un espacio

Page 37: Intérprete de Comandos Script

1

Estructura de Control:Cadenas: test,[[]],(())

• test :Ejm: if test $1 = "LINUX" then echo "$1=LINUX"fiif test $1 = $2 then echo "$1=$2"fi#no utilizar -eq con caracteres!

Page 38: Intérprete de Comandos Script

1

Cadenas:test,[[]],(())

• [[ ]] :Ejm: if [[ $1 == "LINUX" ]] then echo "$1=LINUX"fiif [[ $1 == $2 ]] then echo "$1=$2"fi#no utilizar -eq con caracteres!#no utilizar -eq con caracteres!if [[ $1 -eq $2 ]]if [[ $1 -eq $2 ]] then echo "$1=$2"then echo "$1=$2"fifi

Page 39: Intérprete de Comandos Script

1

Uso:test,[[]],(())

if (( $1-eq $2 )) then echo "$1=$2"fiif (($1==$2)) then echo "$1=$2"fi

Page 40: Intérprete de Comandos Script

1

Entorno y Variables:Parámetros

• Parámetros: $0,$1,$2,$3...$9– $0 contiene el nombre del script– $1 el primer parámetro que se le pasa al script.– $# indica el nº de parámetros con el que se ha llamado

al script.– $* lista de todos los parámetros.– $? código de error generado por la última orden. (0 true

y <>0 false)

Page 41: Intérprete de Comandos Script

1

Entorno y Variables:Parámetros

• shift: Si necesitamos más de 9 parámetros, se desplaza hacia la izquierda en una posición, así $1 toma el valor de $2

• Otra manera de obtener los argumentos después del $9, es utilizando llaves, por ejm: ${10}, ${11}, ${12}Ejm: $vi pruecho "${11}"

./pru 1 2 3 4 5 6 7 8 9 10 1111

Page 42: Intérprete de Comandos Script

1

Entorno y Variables: Parámetros

echo "El nombre del programa es $0"echo "El valor del primer parámetro es $1"echo "El valor del segundo parámetro es $2"echo "El numero de parámetros introducido es $#"echo "La lista de todos los parámetros es $*"shift echo "El valor del segundo parámetro después de un shift queda

en $1"echo "El valor que retorno es $?"

./pru 1 2 3 4 5 6 7 8 9 10 11

Page 43: Intérprete de Comandos Script

1

Estructuras de Control: Secuencia

• Secuencial comandos:$ ls dir1 ; ls dir2 ; ls dir3 > fich.txt

• Grupo de comandos:$ (ls lana;ls dos) > fitx.txt

Page 44: Intérprete de Comandos Script

1

Trucos

• Expansión de llaves:$ echo {one,two,red,blue}fishonefish twofish redfish bluefish

• Sustitución de Comandos: $(command) donde command tiene salida estándar. Se usa para asignar el valor a una variable o para pasar como parámetro a otro comando.

$ date +%d-%b-%Y

24-sep-2007

$ today=$(date +%d-%b-%Y)

$ echo $today

24-sep-2007

$ rpm -ql $(rpm -qa | grep httpd)

Page 45: Intérprete de Comandos Script

1

Estructuras de Control:For

• For: ejecuta tantas veces como elementos en listafor contador in 1 2 3do

echo "El bucle durante $contador veces"doneNota: Va cogiendo los diferentes valores de la lista hasta

que finaliza cuando contador es null.

Page 46: Intérprete de Comandos Script

1

Estructuras de Control:For

• For: ejecuta tantas veces como elementos en listacadena=$(seq 1 3)for a in $cadenado

echo holadoneseq 9 -1 1seq 1 9

Page 47: Intérprete de Comandos Script

1

Estructuras de Control: Select

• select: Similar al for. Una vez ejecutado el grupo de comandos volverá a mostrarnos la lista de opciones sucesivamente hasta que pulsemos (Ctrl+C ó Ctrl+D)select user in alum301 alum302 alumn303do

echo "Enviando mensaje a $user"mail $user <msg

done

Page 48: Intérprete de Comandos Script

1

Estructuras de Control:Select

• select:$ ./pru1) alum3012) alum3023) alumn303#? 2 (Introducido por teclado)Enviando mensaje a alum302

Page 49: Intérprete de Comandos Script

1

Estructuras de Control:Select

• select:#? 3 (Introducido por teclado)Enviando mensaje a alumn303#? /home/kepa/dead.letter... Saved message in

/home/kepa/dead.letter#? Ctrl+D (Introducido por teclado)

Page 50: Intérprete de Comandos Script

1

Estructuras de Control:Case

• case: vi menuecho "1: Mostrar fecha y hora"echo "2: listar directorio"echo "Introduzca su opcion"read opcioncase $opcion in

1)date;; 2)ls $HOME;; *)echo "Entrada no valida. adios";;esac

Page 51: Intérprete de Comandos Script

1

Estructuras de Control:Case

• case: Elige una opción entre $ ./pru1: Mostrar fecha y hora2: listar directorioIntroduzca su opcion2Admin Contrapatentes.txt gcc.sxi

Page 52: Intérprete de Comandos Script

1

Estructuras de Control:If

• if: $ ./pru lanaif mkdir $1then

echo "Creando directorio $1"echo "Copiando ficheros"cp ~/.* $1

elseecho "Error al crear el directorio $1"

fi

Page 53: Intérprete de Comandos Script

1

Estructuras de Control:If-elifif test condition1 then

command elif test condition2 # Same as elseif

then command

else default-command

fi

Page 54: Intérprete de Comandos Script

1

Estructuras de Control:while|until

• While|until:– while verdadero do ---- done– until falso do ----- done

while test $n -le 9do

echo "Introduzca un valor"read valor

acum=`expr $acum + $valor` n=`expr $n + 1`doneecho "Acumulado=$acum"

Page 55: Intérprete de Comandos Script

1

Estructuras de Control:function

• Function:$vi prueba

function buenosdias(){

echo “egunon $1”}buenosdias $1

$./prueba Kepa

egunon Kepa

Page 56: Intérprete de Comandos Script

1

Estructuras de Control:Exit

• exit: se usa para terminar un script o una función de un script. El valor que se devuelve lo recogerá el proceso padre.

• Todos los comandos retornan un exit donde 0 significa éxito y <> 0 un código de error. En caso de que nuestro script no tenga exit devolverá el estado del último comando ejecutado.

Page 57: Intérprete de Comandos Script

1

Estructuras de Control:Exit#!/bin/bash echo hello echo $? # Echo devuelve un 0 ya que el

comando se ha ejecutado con éxitolskdf # No reconoce el comandoecho $? # Devuelve <> 0 ya que el

comando ha falladoexit 113 # Retornará 113 al shell# Para verificar escribe "echo $?" después

de ejecutar el script.

Page 58: Intérprete de Comandos Script

1

Modos de ejecución de ScriptScript->Es un fichero de comandos.Ejm: vi ejemplo

mkdir lana

cd lana

ls –a

1.-$bash ejemplo2.-$ejemplo3.-$source ejemplo 4.-$. ejemplo5.-$exec ejemplo

Page 59: Intérprete de Comandos Script

1

Modos de ejecución de Script

Ejm1: more ejemplo1#! /bin/bash#crea un directorio ’lana’ y muestra sus ficheros ocultosmkdir lanacd lanals –a

(*) Comprobar si se modifica el directorio actual en los 5 diferentes modos.

Page 60: Intérprete de Comandos Script

1

Modos de ejecución de Script$ exec ejemplo1

Se ejecuta en el mismo proceso que le llama.Normalmente cuando se llama a un script secrea un subproceso hijo con fork para que lo ejecute.Aquí el comando reemplaza al shell y cuando elscript termina se cierra el shell, utilizándose enel último comando del script.

Page 61: Intérprete de Comandos Script

1

Modos de ejecución de Script

Ejm:vi pruebals$ exec ./prueba

Page 62: Intérprete de Comandos Script

1

Intérpretes: 2 Tipos

• Intérprete interactivo de conexión• Intérprete interactivo de no conexión

Page 63: Intérprete de Comandos Script

1

Intérpretes: 2 Tipos

Page 64: Intérprete de Comandos Script

1

Intérpretes: Conexión• Se ejecuta cuando abrimos una sesión con

telnet o ssh o programa mingetty...– El programa mingetty muestra un mensaje de login

(usuario: kepa passwd:******)– Después de introducir, se carga el /bin/login que lee

/etc/passwd o /etc/shadow– Si el usuario registrado está en dichos ficheros se inicia

una sesión interactiva con bash (se llama a /bin/bash), ésta ejecutará el script /etc/profile(todos los usuarios) y después uno de los siguientes scripts: ~/.bash_profile, ~/.bash_login o ~/.profile; y /etc/bashrc(si existe) y ~/.bashrc

Page 65: Intérprete de Comandos Script

1

Intérpretes: No Conexión

• Se ejecuta cuando ejecutamos directamente el comando /bin/bash– ejecuta /etc/bashrc(si existe) – ejecuta ~/.bashrc

Page 66: Intérprete de Comandos Script

1

Scripts: Inicio de Sesión./etc/profile (fedora)

USER=`id -un`LOGNAME=$USERMAIL="/var/spool/mail/$USER"HOSTNAME=`/bin/hostname`HISTSIZE=1000if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then INPUTRC=/etc/inputrcfiexport USER LOGNAME MAIL HOSTNAME HISTSIZE

INPUTRC

Page 67: Intérprete de Comandos Script

1

Scripts: Inicio de Sesión./etc/profile (Ubuntu)

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) and Bourne compatible shells (bash(1), ...)umask 022

if [ "$PS1" ]; then if [ "$BASH" ]; then PS1='\u@\h:\w\$ ' if [ -f /etc/bash.bashrc ];

then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fifi

Page 68: Intérprete de Comandos Script

1

Scripts:Inicio de Sesión.Variables de ambiente#archivo donde se almacena los comandos ejecutados

HISTFILE=~/.bash_history# Tamaño del ficheroHISTSIZE=1000# documentación en castellano del manMANPATH=/usr/share/man/esLANGUAGE=esLANG=es_ESexport LANG LANGUAGE MANPATH HISTFILE ...

Page 69: Intérprete de Comandos Script

1

Scripts:Inicio de Sesión.Variables de ambiente

#cambiar el tipo de terminal:#si nos conectamos desde linux o windowsTERM=vt100 o ansi#Consultar los tipos de terminal ir a :

/usr/share/terminfo#Cambiar y consultar la base terminfo desde el bash

con el programa: tput bold #terminal muestra con negrita

Page 70: Intérprete de Comandos Script

1

Scripts:Inicio de Sesión.Variables de ambiente

PS1 Y PS2• Contienen los prompts que bash presenta al usuario.• PS1: es el prompt principal (cuando espera

comandos)Ejm:[kepa@vppy118 share]$ echo $PS1[\u@\h \W]\$Puedo añadir PS1="[\u@\h \w \W]\$"[root@vppy118 ~ root]$export PS1Para más información: man bash

Page 71: Intérprete de Comandos Script

1

Scripts:Inicio de Sesión.Variables de ambientePS1 Y PS2

• PS2: es el prompt secundario (cuando espera a que se complete la información de un comando)

[kepa@vppy118 kepa]$echo $PS2 >[kepa@vppy118 kepa]$for a in $(seq 1 3)> do> echo hola> doneholaholahola

Page 72: Intérprete de Comandos Script

1

Scripts:Inicio de Sesión.

• En función del shell que se ejecute por defecto el fichero será diferente:

.login.bash_profile.profile

.profileFichero

Csh;tcshbashshShell

Page 73: Intérprete de Comandos Script

1

Scripts:Inicio de Sesión.Fedora:.bash_profileif [-f ~/.bashrc]; then

. ~/.bashrc

fi

PATH=$PATH:$HOME/bin

export PATH

unset USERNAME

Ubuntu:.profileif [ -n "$BASH_VERSION" ];

then

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

fi

if [ -d ~/bin ] ; then

PATH=~/bin:"${PATH}"

fi

Page 74: Intérprete de Comandos Script

1

Scripts:Personalización de entorno

.bashrc• Se ejecuta cuando abrimos un intérprete de

comandos , exceptuando cuando entramos en el inicio de sesión (que lo ejecuta el .bash_profile)

• Se utiliza para – Establecer el entorno para el prompt– Establecer el entorno para los scripts que ejecutemos.

Page 75: Intérprete de Comandos Script

1

Scripts: Personalización de entorno

• En función del shell que se ejecute por defecto el fichero será diferente:

.cshrc.bashrc(no tiene)

Fichero

Csh;tcshbashshShell

Page 76: Intérprete de Comandos Script

1

Scripts: Personalización de entorno

Fedora:.bashrc

if [-f etc/.bashrc]; then

. etc/.bashrc

fi

alias del=‘rm’

alias moer='more'

Ubuntu:.bashrc

export HISTCONTROL=ignoredups

export HISTCONTROL=ignoreboth

if [ "$TERM" != "dumb" ]; then

eval "`dircolors -b`"

alias ls='ls --color=auto'

fi ...

if [ -f /etc/bash_completion ]; then

. /etc/bash_completion

fi

Page 77: Intérprete de Comandos Script

1

Scripts: fin de sesión

• En función del shell que se ejecute por defecto el fichero será diferente:

.logout.bash_logout.logoutFichero

Csh;tcshbashshShell

Page 78: Intérprete de Comandos Script

1

Scripts:fin de sesión

.bash_logout• Se ejecuta cuando salimos de la sesión• Se utiliza para

– Dar mensajes de despedida– Limpiar la pantalla

Page 79: Intérprete de Comandos Script

1

Scripts:fin de sesión.bash_logout(fedora)

clear

.bash_logout(Ubuntu)

# when leaving the console

clear the screen to

increase privacy

if [ "$SHLVL" = 1 ]; then

[ -x /usr/bin/clear_console ]

&& /usr/bin/clear_console

-q

fi

Page 80: Intérprete de Comandos Script

1

Scripts: fin de sesión

• Ejm:.bash_logoutcleardateecho ***********************echo Laster arte Kepaecho ***********************