Intrprete de Comandos Script Kepa Bengoetxea 1 Referencia
Intérprete de Comandos Script Kepa Bengoetxea 1
Referencia: • • http: //www. tldp. org/LDP/abs/html/ http: //www. e-ghost. deusto. es/docs/shell. Scriptin. html man bash http: //es. tldp. org/Manuales-Lu. CAS/blfs-es-5. 0/postlfs/profile. html 1
Emulador de Terminal • Emulador de terminal: Un emulador de terminal es un programa informático que simula el funcionamiento de una 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 Pu. TTY y ssh – Para el escritorio Gnome: gnome-terminal – Para sistema de ventanas X Window System: xterm 1
Emulador de Terminal • Uso emulador de Terminal: – Acceder a una 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 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. • 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) 1 – Tcsh: Es la versión csh para Linux.
Shell o Intérprete de Comandos • Cada usuario tiene un shell por defecto, que se asocia a la hora de crear el usuario. • 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 -0 ubuntu 18 $ dpkg-query -L bash /bin/bash /etc/skel/. bashrc /etc/skel/. profile /etc/skel/. bash_logout 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. 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 1
Curiosidades: • Uso ? , *, [, ]: – grep 4 * – grep 4 ? ? ? eba – grep 4[1 -3] prueba 41 42 43 – grep [Kk]epa prueba – grep 4[13] prueba 41 43 1
Creación de un Script->Es un fichero de comandos. 1. Editar: $gedit backup. sh #!/bin/bash #crea un copia de mi carpeta /home/kepa cd /home nombrefich="`date +%G`-`date +%m`-`date +%d`kepa" tar -cvzf /tmp/$nombrefich. tar. gz kepa 2. $chmod u+rx backup. sh 3. [cp backup. sh /usr/local/bin/] para todos 4. $backup. sh Nota: . /backup. sh si el script no está en los caminos del PATH (mirar con echo $PATH) 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 #? 1
Entorno y Variables. /mensaje ->Llamada a una bash hijo, que ejecuta dicho script. #vi mensaje sleep 15 # chmod 700 mensaje (Antes de ejecutar) # ps -l. F F S UID CMD PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY 0 S kepa 3860 3858 0 76 0 - 1099 wait 4 1244 0 18: 14 pts/2 0 R kepa 4093 3860 0 77 0 - 563 - 748 0 22: 23 pts/2 TIME 00: 00 bash 00: 00 ps -l. F 1
Entorno y Variables (Después de ejecutar) #. /mensaje & [1] 4100 # ps -l. F F S UID CMD 0 S kepa 1 S kepa 0 R kepa PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY 3860 4101 4102 3858 3860 4100 3860 0 0 75 75 77 78 0000 - TIME 1099 wait 4 1248 0 18: 14 pts/2 00: 00 bash 1099 wait 4 1252 0 22: 26 pts/2 00: 00 bash 933 480 0 22: 26 pts/2 00: 00 sleep 20 563 748 0 22: 26 pts/2 00: 00 ps -l. F 1
Entorno y Variables • 3 zonas de memoria: – Área de datos locales al shell – Área de datos globales a todos los shell 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 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 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/. profile $vi. bashrc PATH=$PATH: $HOME/bin export PATH 1
Entorno y Variables: Comandos • set: Muestra las variables locales y globales o de entorno. On Ubuntu and Debian systems, the set command will also list shell functions after the shell variables. Use set | less to see the variables then. • 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 1
Entorno y Variables • 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ó. 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=1 a=`expr $a + 1` echo "$a" a="b" echo `expr $a + 1` $. /pru 2 expr: argumento no numérico 1
Comandos: 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 [) 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 1
Comandos: echo Caracteres 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 '$HOME' ->$HOME – Comillas graves(`): Lo interpreta como comando » echo –e " los usuarios conectados son: n`who` “ – 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 1
Comandos: read • read: Permite la introducción de valores a través de un guión. echo "introduce un directorio" read dir echo "El contenido del directorio es $dir" echo "`ls $dir`" Esto equivale a: read -p "introduce un directorio" $dir echo "El contenido del directorio es $dir" echo "`ls $dir`" 1
Comandos: printf • printf fstring vars: Muestra los valores de vars según el formato especificado en fstring. $ printf '%st : tu carpeta de inicio es %sn' $USER $HOME kepa : tu carpeta de inicio es /home/kepa $ printf "%st : tu carpeta de inicio es %sn" $USER $HOME kepa : tu carpeta de inicio es /home/kepa 1
Comandos: $? $? : Valor de la salida del último comando ó Código de error generado por la última orden. (0 true y <> 0 false) $mkdir lana (Correcto) $$? 0 $mdirk lana (Error) $$? 1 (valor distinto de 0) 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” = “hola 1” echo $? 1 1
Estructuras de Control: test – Comparar dos variables: cadenas nomvar 1=”kaixo” nomvar=”kaixo” test $nomvar = $nomvar 1 echo $? 0 – Comparar dos variables: números num 1=1 num 2=1 test $num 1 -eq $num 2 echo $? 0 1
Estructuras de Control: test – Tratamiento de cadenas: • • • test $cad 1 = $cad 2 test $cad 1 != $cad 2 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 $num 1 -eq $num 2 test $num 1 -ne $num 2 test $num 1 -lt $num 2 test $num 1 -le $num 2 test $num 1 -gt $num 2 test $num 1 -ge $num 2 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 fich test -f $nomfich #si es fich normal (no un dir o un dispositivo) test -s $nomfich #si su tamaño es distinto de 0 test -d $nomfich #si es directorio test -b $nomfich #si es un disp. de bloque (fd 0, hda, . . . ) 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ía test -h/-L $nomfich #si es un enlace simbólico test -S $nomfich #si es un socket test -r $nomfich #si tienes permiso de lectura test -w $nomfich # si tienes permiso de escritura test -x $nomfich # si tienes permiso de ejecución test -O $nomfich # si eres el propietario 1
Estructura de Control: test, [], [[]], (()) • Cadena : Ejm: var="LINUX" if test $var = "LINUX" then echo "$var=LINUX" fi Número: Ejm: num 1=2 if test $num 1 -eq 2 then echo "$num 1=2" fi #no utilizar -eq con caracteres! 1
Estructura de Control: test, [], [[]], (()) Los [] ejecutan el comando “test” var="LINUX" if [ $var = "LINUX" ] then echo "$var=LINUX" fi num 1=2 Dejar un espacio if [ $num 1 -eq 2 ] then echo "$num 1=2" fi 1
Estructura de Control: no usar test, [], [[]], (()) • [[ ]] : Ejm: if [[ $1 == "LINUX" ]] then echo "$1=LINUX" fi if [[ $1 == $2 ]] then echo "$1=$2" fi #no utilizar -eq con caracteres! if [[ $1 -eq $2 ]] then echo "$1=$2" fi 1
Estructura de Control: no usar test, [], [[]], (()) if (( $1 == $2 )) then echo "$1=$2" fi 1
Estructuras de Control: test • Opciones Fichero: Retorna true si. . . test -G $nomfich #si pertenece al grupo del fichero test -N $nomfich #si ha sido modificado desde la última vez que lo leíste test $nomfich 1 -nt $nomfich 2 #Si $nomfich 1 es más reciente que $nomfich 2 test $nomfich 1 -ot $nomfich 2 #Si $nomfich 1 es posterior a $nomfich 2 test $nomfich 1 -ef $nomfich 2 #Si $nomfich 1 y $nomfich 2 son enlaces duros del mismo fichero 1
Debugging El shell también tiene un modo de depuración real. Si hay un error en tu script "scriptconerror" entonces puedes depurarlo con: bash -x scriptconerror Esto ejecutará el script y mostrará todas la sentencias que se ejecutan con las variables y comodines ya expandidos. 1
Estructuras de Control: If(expr) if expr/comando; then else fi • Si la expr o comando devuelve 0 (true) si devuelve distinto de 0 (false) #!/bin/bash if test "petete" = "petete" ; then echo expresión evaluada como verdadera else echo expresión evaluada como falsa fi 1
Estructuras de Control: If(comando) if expr/comando; then else fi Ejm: gedit copia. sh if mkdir $1 then echo "Creando directorio $1" echo "Copiando ficheros" cp ~/. * $1 else echo "Error al crear el directorio $1" 1
Estructuras de Control: If(and, or, not) • ! expr devuelve valor booleano contrario a la expr • expr 1 -a expr 2 es un AND • expr 1 -o expr 2 es un OR Ejm: y=1 x=1 if test $x -eq 1 -a $y -eq 1 then echo "iguales" fi 1
Estructuras de Control: If(ficheros) – Ejemplo: read -p "introduce un fichero" $file if test -e $file ; then echo "El fichero $file existe" else echo "El fichero $file no existe" fi 1
Estructuras de Control: If-elif if test condition 1 then command elif test condition 2 # Same as elseif then command else default-command fi 1
Estructuras de Control: If-elif read -p "introduce un fichero" $file if [ -z $file ] ; then echo “cadena vacia no permitido” exit 1 elif [ ! -w $file ]; then echo “no tienes permiso de escritura” exit 1 else echo “kaixo $USER” >> $file fi. . 1
Comandos: expr • Trabajar con números: expr echo `expr 2 + 200` -> 202 n=`expr 4 + 2` n=`expr 4 - 2 n=`expr 4 * 2` #n=8 n=`expr 5 % 2` #n=1 (resto) n=`expr 5 / 2` #n=2 (parte entera) Nota: para evitar mezclar con los caracteres especiales: *(cualquier car) 1
Comandos: expr • Ejm 1: $vi pru echo "Introduce dos números: " read n 1 n 2 echo "La suma es `expr $n 1 + $n 2` " $ chmod u+x pru $. /pru Introduce dos números: 25 La suma es 7 1
Comandos: expr • Ejm 2: $vi pru echo "Introduce dos números: " read n 1 n 2 echo "La multiplicación es `expr $n 1 * $n 2` " $ chmod u+x pru $. /pru Introduce dos números: 25 La multiplicación es 10 1
Operaciones Aritméticas: $(()) • $(()): Evalúa la expresión como operación entre enteros n=$(( 4 + 2 )) n=$(( 4 - 2 )) n=$(( 4 * 2 )) #n=8 n=$(( 5 % 2 )) #n=1 (resto) n=$(( 5 / 2 )) #n=2 (parte entera) y=200 x=$(( $y/2 )) 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. 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 pru echo "${11}" 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 número 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 $? " 1
Entorno y Variables: {} {}Las llaves son la síntaxis general usada para la sustitución de variables y $ hace uso de las llaves alrededor del elemento referenciado $1 puede escribirse como $1 ó ${1} $PATH puede escribirse como ${PATH} ¿Cuando usamos las llaves? Diferencias entre usar: echo "${11} o $11 o ${1}1" echo "$PATH 2 o ${PATH}2" 1
Variables: ${variable: x: y} ${HOME: 0: 1} El sufijo : 0: 1 que sigue al nombre de la variable se utiliza para extraer de HOME la subcadena que comienza en la primera posición (los caracteres se enumerran comenzando desde 0), y continúa 1 caracter más. Es decir, este sufijo se utiliza para conseguir el primer carácter de la variable. 1
Estructuras de Control: Secuencia • Secuencial comandos: $ ls dir 1 ; ls dir 2 ; ls dir 3 > fich. txt • Grupo de comandos: $ (ls lana; ls dos) > fitx. txt 1
Trucos • Expansión de llaves: $ echo {one, two, red, blue}fish onefish 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. Es equivalente a `command`. $ date +%d-%b-%Y 28 -sep-2009 $ today=$(date +%d-%b-%Y) $ echo $today 28 -sep-2009 $dpkg-query -L $(dpkg-query -l | grep vim) 1
Variables: Eval eval cadena : evalúa la cadena tras la sustitución de las variables. Convert a string into a command. The eval command can be used for code generation from the command-line or within a script. bash$ command_string="ps ax" bash$ process="ps ax" bash$ eval "$command_string" | grep "$process" 1
Estructuras de Control: For • For: ejecuta tantas veces como elementos en lista for contador in 1 2 3 do echo "El bucle durante $contador veces" done Nota: Va cogiendo los diferentes valores de la lista hasta que finaliza cuando contador es null. 1
Estructuras de Control: For • For: ejecuta tantas veces como elementos en lista cadena=$(seq 1 3) for a in $cadena do echo hola done seq 9 -1 1 seq 1 9 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 alum 301 alum 302 alumn 303 do echo "Enviando mensaje a $user" mail $user < “Soy vuestro profesor de ASO” done *Nota: sudo apt-get install mailutils 1
Estructuras de Control: Select • select: $. /pru 1) alum 301 2) alum 302 3) alumn 303 #? 2 (Introducido por teclado) Enviando mensaje a alum 302 1
Estructuras de Control: Select • select: #? 3 (Introducido por teclado) Enviando mensaje a alumn 303 #? /home/kepa/dead. letter. . . Saved message in /home/kepa/dead. letter #? Ctrl+D (Introducido por teclado) 1
Estructuras de Control: Case • case: vi menu echo "1: Mostrar fecha y hora" echo "2: listar directorio" echo "Introduzca su opción" read opcion case $opcion in 1)date; ; 2)ls $HOME; ls /home/euiti/lana; ; *)echo "Entrada no válida. adiós"; ; esac 1
Estructuras de Control: Case • case: Elige una opción entre $. /pru 1: Mostrar fecha y hora 2: listar directorio Introduzca su opcion 2 Admin Contrapatentes. txt gcc. sxi 1
Estructuras de Control: while|until • While|until: while condición(true)|comando; (comando devuelva una salida) do ---- done until condición(false)|comando; (comando no devuelva una salida) do ----- done acum=0 while test $n -le 9 do echo "Introduzca un valor" read valor acum=`expr $acum + $valor` 1
Function (Parámetros) • $vi prueba function buenosdias() { echo "egunon $1" } buenosdias $1 $. /prueba Kepa egunon Kepa 1
Function (Incluir funciones) $vi funciones function buenosdias() { echo "egunon $1" } $vi principal. sh. . /funciones echo "introduce tu nombre" read n 1 buenosdias $n 1 $chmod +x funciones principal. sh $. /principal. sh introduce tu nombre kepa egunon kepa 1
Function (Return) $vi prueba 2. sh . /prueba 2. sh function igualabc () “Introduce un valor” {if test $1 = "abc" abc then return 0 else return 1 fi} echo “Introduce un valor” 0 $. /prueba 2. sh “Introduce un valor” read valor pepe igualabc $valor 1 echo $? 1
Function (Exit) $vi prueba 2. sh . /prueba 2. sh function igualabc () “Introduce un valor” {if test $1 = "abc" abc then exit 0 else exit 1 fi} echo “Introduce un valor” $. /prueba 2. sh “Introduce un valor” pepe read valor igualabc $valor echo $? 1
Estructuras de Control: Return return [n] – Salida de una función con el valor de retorno n. – Si se omite n , retorna el estado del último comando ejecutado en el cuerpo de la función. 1
Estructuras de Control: Exit • exit: se usa para terminar 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. 1
Estructuras de Control: Exit #!/bin/bash echo hello echo $? # Echo devuelve un 0 ya que el comando se ha ejecutado con éxito lskdf # No reconoce el comando echo $? # Devuelve <> 0 ya que el comando ha fallado exit 113 # Retornará 113 al shell # Para verificar escribe "echo $? " después de ejecutar el script. 1
Modos de ejecución de Script->Es un fichero de comandos. Ejm: vi ejemplo. sh mkdir lana sleep 10 cd lana ls –a 1. -$bash. /ejemplo. sh ó sh. /ejemplo. sh 2. -$. /ejemplo. sh 3. -$source. /ejemplo. sh 4. -$. . /ejemplo. sh 5. -$exec. /ejemplo. sh 1
Modos de ejecución de Script Ejm 1: more ejemplo 1 #! /bin/bash //obligo que se abra un hijo bash #crea un directorio ’lana’ y muestra sus ficheros ocultos mkdir lana cd lana ls –a (*) Comprobar si se modifica el directorio actual en los 5 diferentes modos. 1
Modos de ejecución de Script Source se utiliza normalemente en 2 casos: a) Para hacer visibles las variables que están definidas en un fichero desde el bash padre. . profile PATH="$PATH: $HOME/bin" export PATH b) Si quiero incluir funciones reusables en mi script: $vi funciones: function buenosdias(){echo "egunon $1"} $vi principal. sh: source. /funciones buenosdias $1 1
Modos de ejecución de Script $ exec ejemplo 1 Se ejecuta en el mismo proceso que le llama. Normalmente cuando se llama a un script se crea un subproceso hijo con fork para que lo ejecute. Aquí el comando reemplaza al shell y cuando el script termina se cierra el shell, utilizándose en el último comando de un script. Ejm: pstree -p o echo $$ detecta el PID del bash exec sleep 10 pstree -p (desde otra terminal) 1 ¿Qué ocurre?
Modos de ejecución de Script Ejm: vi prueba ls $ exec. /prueba 1
Intérpretes: 2 Tipos • Intérprete interactivo de conexión • Intérprete interactivo de no conexión 1
Intérpretes: 2 Tipos 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 1
Intérpretes: No Conexión • Se ejecuta cuando ejecutamos directamente el comando /bin/bash – ejecuta /etc/bashrc(si existe) – ejecuta ~/. bashrc 1
Scripts: Inicio de Sesión. /etc/profile (fedora) USER=`id -un` LOGNAME=$USER MAIL="/var/spool/mail/$USER" HOSTNAME=`/bin/hostname` HISTSIZE=1000 if [ -z "$INPUTRC" -a ! -f "$HOME/. inputrc" ]; then INPUTRC=/etc/inputrc fi export USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC 1
Scripts: Inicio de Sesión. /etc/profile # /etc/profile if [ -d /etc/profile. d ]; then for i in /etc/profile. d/*. sh; do if [ -r $i ]; then. $i fi done unset i fi umask 022 if [ "$PS 1" ]; then if [ "$BASH" ]; then PS 1='u@h: w$ ' if [ -f /etc/bashrc ]; then. /etc/bashrc fi else if [ "`id -u`" -eq 0 ]; then PS 1='# ' else PS 1='$ ' fi fi fi 1
Scripts: Inicio de Sesión. Variables de ambiente #archivo donde se almacena los comandos ejecutados HISTFILE=~/. bash_history # Tamaño del fichero HISTSIZE=1000 # documentación en castellano del man MANPATH=/usr/share/man/es LANGUAGE=es LANG=es_ES export LANGUAGE MANPATH HISTFILE. . . 1
Scripts: Inicio de Sesión. Variables de ambiente #cambiar el tipo de terminal: #si nos conectamos desde linux o windows TERM=vt 100 o ansi o xterm #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 1
Scripts: Inicio de Sesión. Variables de ambiente PS 1 Y PS 2 • Contienen los prompts que bash presenta al usuario. • PS 1: es el prompt principal (cuando espera comandos) Ejm: [kepa@vppy 118 share]$ echo $PS 1 [u@h W]$ Puedo añadir PS 1="[u@h w W]$" [root@vppy 118 ~ root]$export PS 1 Para más información: man bash 1
Scripts: Inicio de Sesión. PS 1 Y PS 2 Variables de ambiente • PS 2: es el prompt secundario (cuando espera a que se complete la información de un comando) [kepa@vppy 118 kepa]$echo $PS 2 > [kepa@vppy 118 kepa]$for a in $(seq 1 3) > do > echo hola > done hola 1
Scripts: Inicio de Sesión. • En función del shell que se ejecute por defecto el fichero será diferente: 1
Scripts: Inicio de Sesión. Fedora: . bash_profile Ubuntu: . profile if [-f ~/. bashrc]; then. ~/. bashrc fi PATH=$PATH: $HOME/bin export PATH unset USERNAME if [ -n "$BASH_VERSION" ]; then if [ -f ~/. bashrc ]; then. ~/. bashrc fi fi if [ -d ~/bin ] ; then PATH=~/bin: "${PATH}" fi 1
Scripts: Personalización de entorno • En función del shell que se ejecute por defecto el fichero será diferente: 1
Scripts: Personalización de entorno. bashrc • Se ejecuta cada vez que abrimos un intérprete de comandos bash, excepto 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. 1
Scripts: Personalización de entorno Ubuntu: . bashrc Fedora: . bashrc if [-f etc/. bashrc]; then. etc/. bashrc fi alias del=‘rm’ alias moer='more' 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 1
Scripts: fin de sesión • En función del shell que se ejecute por defecto el fichero será diferente: 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 1
Scripts: fin de sesión. bash_logout(fedora) . bash_logout(Ubuntu) clear # 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 1
Scripts: fin de sesión • Ejm: . bash_logout clear date echo ************ echo Laster arte Kepa echo ************ 1
- Slides: 94