Shell Conceptos Generales Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula SHELL • Interface entre el usuario y el sistema operativo (la capa más externa). • Es un programa, el cual tiene la capacidad de: – leer y escribir en la terminal, – ejecutar otros programas • Comunicación: – Interactiva – Shell Script Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula SHELL • Es el lenguaje de comandos de LINUX. • Al escribir un comando, es el Shell y no Linux, quien se encarga de interpretarlo y ordenar que se ejecute. Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula SHELL • Bourne shell (/bin/sh) – Creado por Steven Bourne de AT&T – Es el más antiguo, fiable y compatible entre todas las plataformas UNIX • Korn shell (/bin/ksh) – Creado por David Korn – Mas moderno, toma los comandos del anterior y agrega nuevos – En situaciones extremas ó complicadas, falla Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula SHELL • Bourne-Again shell (/bin/bash) – Creado por Brain Fox 1987 – Predeterminado en la mayoría de las distribuciones de los sistemas GNU/Linux • C shell (/bin/csh) – Creado por Bill Joy – Su sintaxis es muy parecida al lenguaje de programación C Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula SHELL • Características: – Redireccionar la E / S – Tuberias (pipeling) – Alias de comandos – Uso de metacaracteres – Uso de variables – Historial de comandos – Procesos en background Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Redireccionar E/S – Proceso (programa en ejecución) Entrada Estándar Salida Estándar PROCESO Teclado Monitor Error Estándar Monitor Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Redireccionar E/S – Hay tres archivos que son asociados automáticamente a todo proceso: • stdin • stdout • stderr 0 1 2 Sistemas Operativos III - ITS – EMT - CETP (teclado) (monitor) (monitor) Prof. L. Carámbula Interactiva • Redireccionar Entrada – comando < archivo mail < carta – envia el contenido del archivo carta. tr [a-z] [A-Z] < orden – Cambia las mínusculas por mayúsculas en el archivo orden. Sistemas Operativos III - ITS – EMT - CETP las Prof. L. Carámbula Interactiva • Redireccionar Salida – comando > archivo ls > listado – envia el contenido del directorio corriente al archivo listado. ls >> listado – agrega al final del archivo listado Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Redireccionar Salida – comando > archivo cat > arch1 – escribir contenido – ctrl + d (EOF) Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Redireccionar Error – comando 2 > archivo cd /root 2 > arch_err – si el comando produce un error, este se envía al archivo arch_err – no se despliega el mensaje en la terminal. cat arch1 arch2 2 >> arch_err – en caso de error se agrega el mensaje en arch_err Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Combinar Redireccionamientos – comando < arch_E > arch_S 2> arch_err – comando < arch_E >> arch_S 2>> arch_err • No importa el orden Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Tuberias (pipeling) – Comunica procesos entre si. – La salida estándar de un proceso se toma como la entrada estándar del proceso siguiente. sort /etc/passwd | head -10 – el contenido del archivo /etc/passwd se ordena alfabéticamente y se muestran las primeras 10 líneas. Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Alias de comandos – Permite utilizar un alias para un determinado comando, incluyendo parámetros. – El comando se llama alias alias clear = cls • al digitar cls, se ejecuta clear alias dir = ‘ls -l’ • al digitar dir, se ejecuta ls -l Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Alias de comados – Se pueden eliminar los alias creados. – El comando se llama unalias unalias cls unalias dir • eliminan los anteriormente. Sistemas Operativos III - ITS – EMT - CETP alias creados Prof. L. Carámbula Interactiva • Metacaracteres – permiten realizar sustituciones de caracteres * = todas las cadenas posibles de caracteres ? = indica “cualquier” caracter (uno) [a-z] = indica “cualquier” caracter entre a y z. Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Metacaracteres [0-9] = indica “cualquier” caracter entre 0 y 9. ^ = niega lo que continua. [^0-9] = indica “cualquier” caracter que no este entre 0 y 9. [^aeiou] = indica “cualquier” caracter que no sea vocal Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Metacaracteres \ : protege el carácter que le sigue del intérprete para considerarlo como tal. • Por ej. \$var no mostraría el contenido de var sino la cadena $var “ ” : se emplea para contener texto con espacios ‘ ‘ : el texto contenido se representará tal cual. El shell no interpretará nada contenido entre ellas. Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Metacaracteres ` ` : Las comillas invertidas le indican al shell que debe ejecutar lo contenido entre ellas. • Si escribimos cantarch=`ls -l | wc -l` podremos almacenar en una variable el número de archivos de un directorio Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Variables de Entorno – HOME - Camino absoluto al directorio LOGIN del usuario – PATH - Conjunto de directorios a los que el shell va a buscar un comando, cuando éste se ejecuta. – PS1 - Es el carácter de prompt inicial “$”. Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Variables de Entorno – LOGNAME - Contiene el nombre del usuario conectado en la terminal – MAIL - Archivo de correo – SHELL - Interprete de comandos por defecto Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Variables de Entorno – TERM - Tipo de Terminal • Para referirse al valor de una variable debe tipearse con el caracter $ precediéndola, de ésta manera el shell sustituye $nombre por el valor que tenga asignado esa variable. Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Variables del Usuario – Una variable es un identificador, y el tipo es de caracteres, al igual que en un lenguaje de programación. – Para asignar un valor, se digita el nombre seguido de un símbolo de =, seguido del valor. – No debe haber espacios en blancos entre el = y el nombre de la variable ó el valor. (si se quisiera, el valor deberá estar entre “ ”) Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Variables del Usuario a=hola b=22:30 texto_hrs=“ la hora actual es:” echo $a • hola echo $texto_hrs$b • la hora actual es:22:30 Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Historial de commandos – Al presionar la tecla , se visualizan los comandos ingresados anteriormente. history -c • borra el historial de comandos history • despliega la lista de todos los comandos ingresados anteriormente Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Proceso en background – Al final de la instrucción colocar el caracter & – Este se ejecuta en background • me permite ejecutar otros comandos mientras se ejecuta el proceso background. cp /home/user/*.dat /etc/backup & – copia todos los archivos que finalicen en .dat al direcotrio /etc/backup, permitiendo ejecutar otros comandos durante el proceso. Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva • Proceso en background – Ejemplo: . . /etc/reloj.sh /etc/reloj.sh & Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula Interactiva /etc/reloj.sh #!/bin/bash while (( 1 )) do # se formatea la hora y la fecha como la veremos en pantalla cmd=`date +"%H:%M:%S %F"` # se guarda la posición actual del cursor echo -n -e "\033[s" # se calcula el total de columnas de la terminal o consola y se posiciona el cursor en esa # posición menos 19 caracteres que es el largo de 'HH:MM:SS AAAA-MM-DD' C=$((`tput cols` - 19)) tput cup 0 $C # establecemos el color del reloj en verde invertido # setaf 2 = verde, smso = invertido COLOR=`tput setaf 2; tput smso` # se regresa a texto normal, sino todo saldría verde NORMAL=`tput sgr0` # imprimimos en la pantalla la variable con la fecha y hora junto con los cambios de color echo -n $COLOR$cmd$NORMAL # se reestablece el cursor a donde se encontraba originalmente echo -n -e "\033[u" # el ciclo se ejecuta cada segundo sleep 1 done Sistemas Operativos III - ITS – EMT - CETP Prof. L. Carámbula