Anda di halaman 1dari 19

Hola, quiero compartir esto que es programar en shell, es de un libro que adquir y tiene licencia gnu, no domino Shell,

pero me gusta la consola, lo malo es que no puedo poner los ejercicios del cd, cuando lo encuentre espero poder poner los ejercicios.

Tabla de contenidos:
1. Introduccin: u! es un shell" #. $anejo b%sico del shell #.1. &a linea de comandos #.#. 'atrones de sustitucin #.(. )edireccin de *icheros #.(.1. )edireccin stdout a *ichero #.(.#. )edireccin stderr a *ichero #.(.(. )edireccin stdin a *ichero #.(.+. ,-adir redireccin a *ichero #.(... )edireccin /documentos empotrados/ #.+. 0uberas #... 1ontrol de procesos (. 1omandos 23I4 +. 'rogramacin shell +.1. $ira mam%, soy un script5 +.#. 6ariables +.(. &inea de comandos +.+. &a salida de los programas +... 7peraciones aritm!ticas +.8. 1ondicionales +.8.1. i* ... then ... 9 else ... : +.;. <ucles +.;.1. *or ... in ... +.;.#. )ompiendo un bucle: brea= +.;.(. >hile ...

1. Introduccin: u! es un shell" 6ol?er arriba. @s una parte *undamental de todo sistema operati?o que se encarga de ejecutar rdenes b%sicas para el manejo del sistema. Suelen incorporar caractersticas como:
o o o

control de procesos redireccin de *icheros leguaje para escribir peque-os programas

Hay muchos:

command.com cmd.eAe B C7S y deri?ados =sh B =orn shell de 23I4 chs B 1 shell, similar en sitaAis al lenguaje de programacin 1 bsh B <ourne shell tcsh, Dsh, ash, ... bash B <ourne ,gain shell, el shell mayoritario de sistemas &inuA #. $anejo b%sico del shell 6ol?er arriba.
o o o o o o

IntroduDcamos cuatro comandos b%sicos para ?er esta parte: echo : repite los argumentos en la salida est%ndar Eej. pantallaF ls : lista el contenido de un directorio cat : muestra el contenido de un *ichero more : muestra el contenido de un *ichero haciendo pausas entre pantallas si el *ichero es muy largo #.1. &a linea de comandos 6ol?er arriba.
o o o o

@scribimos:
$ ls

'ulsamos @30@). @n la linea de comandos podemos usar las siguientes Ecombinaciones deF teclas:
o o o o o

o o o o

IG 2I@)C, Se mue?e a la iDquierda C@)@1H, Se mue?e a la derecha ,))I<, 6amos hacia atr%s en el historial de comandos ,<,H7 6ol?emos hacia adelante en el historial de comandos II3 10)& J e 6amos al *inal de la linea I3I1I7 1)0& J a 6amos al principio de la linea 1)0& J d Salir 1)0& J l <orra la pantalla $ayKsculas J )e'ag Hace scroll hacia arriba en la pantalla $ayKsculas J ,?'ag Hace scroll hacia abajo en la pantalla

#.#. 'atrones de sustitucin 6ol?er arriba. Hay ciertos caracteres que el shell sustituir% por otro contenido en base a unas reglas.
o

L cualquier cadena de teAto @jemplo:


$ echo /usr/*

o o

" un solo caracter cualquiera @jemplo:


$ echo /usr/?bin $ echo /usr/????

9...: cualquiera de los caracteres entre corchetes @jemplo:


$ echo /usr/[aeiou]*

#.(. )edireccin de *icheros 6ol?er arriba. Ce*inicin cl%sica: 2n *ichero in*orm%tico es una entidad lgica compuesta por una secuencia de bits, almacenada en un sistema de archi?os ubicada en la memoria de un ordenador. @n 23I4 todo es un *ichero. @s decir, se pueden aplicar a todos los objetos las acciones que soporta un *ichero en su de*inicin cl%sica: abrir, cerrar, leer, escribir, etc. Iicheros est%ndar que est%n abiertos para todo programa en ejecucin:
o o o

@ntrada est%ndar /dev/stdin Eej. 0ecladoF Salida est%ndar /dev/stdout Eej. 'antallaF Salida de error /dev/stderr Eej. 'antallaF

7tros *icheros especiales:


o o o

/dev/null BM /la nada de 23I4/ /dev/zero BM *uente in*inita de ceros /dev/random BM datos aleatorios

u! pasa cuando ejecutamos ls"


#.(.1. )edireccin stdout a *ichero 6ol?er arriba.


$ ls > salida $ cat salida

#.(.#. )edireccin stderr a *ichero 6ol?er arriba.


$ ls pirulotropical 2> error $ cat error

#.(.(. )edireccin stdin a *ichero 6ol?er arriba.


$ cat < /dev/stdin

#.(.+. ,-adir redireccin a *ichero 6ol?er arriba.


$ $ $ $ echo aadir datos >> salida cat salida ls uh 2>> error cat error

#.(... )edireccin /documentos empotrados/ 6ol?er arriba.


$ cat << FINDOCUMENTO

@sto es un documento empotrado. @l comando cat ?a a tomar un *ichero desde stdin que acaba cuando encuentra el delimitador... II3C712$@307

#.+. 0uberas 6ol?er arriba. 2na tubera es un *ichero especial con dos eAtremos, de *orma que lo que escribimos en un lado de la tubera ?a a parar al otro. @n ingl!s: pipe.
$ ls /usr/bin | more

&a salida del comando ls /usr/bin ?a a parar a la entrada del comando more. &as tuberas permiten combinar la *uncionalidad de distintos comandos. 'ara ello la mayor parte de los programas permiten acceder a sus *uncionalidades desde la linea de comandos.

#... 1ontrol de procesos 6ol?er arriba. 2n proceso es un programa en ejecucin con caractersticas propias Ememoria, pila, puntero de programa, nKmero identi*icador Knico, etc.F. @n 23I4 todo proceso es NhijoN de otro, es decir, es creado por otro proceso, considerado como el proceso NpadreN. 0odos los procesos descienden de un proceso principal llamado NInitN, que al iniciar el sistema tiene el numero de proceso 1. @l proceso NinitN es el Knico que no tiene NpadreN. @Aiste la posibilidad que un proceso NpadreN termine de manera inesperada y errnea Edebido a un *allo de

programacin, por ejemploF, este proceso NpadreN terminara, pero podra dejar procesos NhijoN en ejecucin. 1uando un proceso NhijoN queda descolgado del proceso NpadreN, se dice que entra en un estado NDombieN porque su padre no est% esperando cuando acaba. 1uando ejecutamos un comando en el shell se crea un proceso que es hijo de ese shell y el shell espera a que el proceso termine para ?ol?er a tomar el control. 0ambi!n es importante destacar que cada nue?o proceso creado hereda ciertas caractersticas de su padre, como: las ?ariables de entorno y los *icheros abiertos. 9 shell : B ejecuta ls BM 9 ls : shell espera : B *in ls BM 9 shell : Cesde el shell podemos, a parte de crear procesos, manipular a los hijos creados por ese shell. 1ontrol de procesos del shell:
o o

1)0& J c *inaliDa el proceso comando O permite ejecutar un comando en segundo plano @jemplo:
$ ls & bi ! doc! "ail! src! #$% 2&'() #$% * Do e t"p! ls +F

10)& J D parar un proceso en primer plano el shell toma el control y NduermeN al proceso que estaba en ejecucin @jemplo:
$ ls /bin/ | more

10)& J D
#$% * Do e -topped o ls +F !bi ! , "ore

jobs muestra in*ormacin sobre los procesos parados dependientes de este shell @jemplo:
$ .obs #$% * Do e -topped ls +F !bi ! , "ore

*g continua un proceso parado, en primer plano. Si eAisten ?arios procesos

parados, podemos ponerle como argumento el ndice que el comando jobs nos mostr. o bg continua un proceso parado, en segundo plano. Si eAisten ?arios procesos parados, podemos ponerle como argumento el ndice que el comando jobs nos mostr. (. 1omandos 23I4 6ol?er arriba. Hay m%s de (PP comandos 23I4 distintos. 6amos a estudiar por encima las caractersticas de unos cuantos, los su*icientes como para poder hacer peque-os programas. ,unque los nombres de los comandos siguen una lgica, muchas ?eces esta se ha perdido con el tiempo. @n consecuencia tenemos muchos comandos que no sabemos lo que hacen y, por lo tanto, no los utiliDamos. 3o hay que saber como *uncionan todos los comandos, pero s es interesante conocerlos y m%s o menos saber que hacen. 'ara un uso m%s en pro*undidad consultaremos la p%gina del manual.
o o

ls muestra el contenido de un directorio echo hace eco en pantalla @jemplo:


$ echo hola "u do/

o o

cat muestra el contenido de un *ichero more muestra el contenido de un *ichero haciendo pausas entre pantallas si el *ichero es largo man muestra la p%gina del manual de un comando @jemplo:
$ "a ls

o o

clear borra la pantalla cp copia *icheros y directorios @jemplo:


$ cp 0ichero1ori2i al 0ichero1copia

m? mue?e *icheros @jemplo:


$ "3 0ichero 0ichero2

rm borra *icheros @jemplo:

$ r" 0ichero o

ln enlaDar Ere*erenciarF *icheros @jemplo de enlace /duro/ Ehardlin=F:


$ l 0ichero e lace

@jemplo de enlace /sua?e/ Eso*tlin=F:


$ l o +s 0ichero e lace1si"b4lico

cd cambia de directorio de trabajo si no se indica directorio, nos traslada a QH7$@ @jemplo:


$ cd directorio

o o

p>d muestra el directorio de trabajo actual m=dir crea directorios @jemplo:


$ "5dir directorio

rmdir borra directorios E?acosF @jemplo:


$ r"dir directorio

o o

en? muestra las ?ariables de entorno del programa head muestra las n primeras lineas de un *ichero E1P por de*ectoF @jemplo:
$ head 0ichero

tail muestra las n Kltimas lineas de un *ichero E1P por de*ectoF @jemplo:
$ tail 0ichero

grep busca ocurrencias de una cadena en un *ichero @jemplo:


$ 2rep cade a 0ichero

o o

ps muestra los procesos en el sistema =ill @n?a una se-al a un proceso indicando su 'IC E'rocess ICenti*ier, o nKmero Knico que identi*ica a cada procesoF @jemplo:

$ 5ill $((2 o

eAport @Aporta una ?ariable al entorno del programa @jemplo:


$ e6port 789I8:;E<3alor

read &ee una linea de la entrada est%ndar y la almacena en una ?ariable @jemplo:
$ read li ea

Q Celante de una ?ariable permite acceder a su contenido @jemplo:


$ echo $-=E;;

R Separa dos comandos en una misma linea @jemplo:


$ read li ea > echo se ha le?do@ $li ea

o o o

*ile indica de qu! tipo es un *ichero cal muestra el calendario del mes actual >c cuenta lineas, palabras o bytes en *icheros @jemplo:
$ echo hola Aue tal , Bc

date muestra hora y *echa actuales @jemplo:


$ date

@jemplo de *echa en *ormato yyyyBmmBdd:


$ date C*DE+D"+DdC o o o o o

pass>d cambia la contrase-a de un usuario chmod cambia los permisos de un *ichero cho>n cambia el propietario de un *ichero chgrp cambia el grupo propietario de un *ichero reset restaura la terminal de teAto

>hereis indica donde se puede encontrar un *uente, binario o manual @jemplo:


$ Bhereis ls

>hich indica donde est% un comando @jemplo:


$ Bhich ls

o o o o o

locate busca *icheros *ind bKsqueda a?anDada de *icheros >ho qui!n tiene sesin abierta en la m%quina tac concatena *icheros y los muestra a la in?ersa touch actualiDa la *echa y hora de un *ichero, si no eAiste lo crea @jemplo:
$ touch 0ichero1i e6iste te

o o o o

less una ?ersin m%s elaborada de more que permite desplaDarnos por el teAto, hacer bKsquedas, etc. d* muestra el espacio libre y ocupados de los discos du calcula el espacio de disco usado mail programa simple para en?iar y leer correo tar empaquetar *icheros @jemplo empaquetar:
$ tar c30 0icheroFtar directorio

@jemplo desempaquetar:
$ tar 630 0icheroFtar o o o o o

gDip comprimir un *ichero gunDip descomprimir un *ichero comprimido con gDip Dcat muestra el contenido de un *ichero comprimido con gDip ldd muestra las libreras que usa un programa halt apaga la m%quina

o o o o o o o

reboot reinicia la m%quina shutdo>n apaga o reinicia la m%quina true cierto, o uno *alse *also, o cero eAit termina la sesin y muestra el login del sistema logout termina la sesin y muestra el login del sistema seq genera una secuencia de nKmeros @jemplo:
$ seA $ $(

cut elimina partes de *icheros @jemplo:


$ echo hola Aue tal , cut +d C C +0 2

a>= esc%ner de patrones y lenguaje de programacin para procesar teAtos @jemplo:


$ echo hola Aue tal , aB5 GH pri t $$ C/CI $2I $& CJC KG

tr elimina o traduce caracteres @jemplo:


$ echo hola Aue tal , tr a 8

sed realiDa trans*ormaciones en *lujos de bytes @jemplo:


$ echo hola Aue tal , sed Gs!a!8!2G

Esubstituye las NaN por N,N en todo el *lujoF


o o o

*mt da *ormato a cada p%rra*o de un *ichero sort ordena *icheros de teAto sleep detiene el proceso durante n segundos @jemplo:
$ sleep L > echo =a pasado L se2u dos

uniq lee de stdin y compara lineas adyacentes escribiendo las lineas Knicas a stdout +. 'rogramacin shell 6ol?er arriba.
o

,hora que sabemos manejarnos con el shell y conocemos unos pocos comandos, ?amos a comenDar a hacer peque-os programas que interpretar% el shell.@n esta parte necesitaremos un editor de teAto plano, como pueden ser: ?i, emacs, joe, mcedit, nano, =>rite, gedit, etc. 1ualquiera de ellos ?ale, siempre que guardemos el teAto como teAtSplain.

+.1. $ira mam%, soy un script5 6ol?er arriba. 6amos a crear un *ichero, script.sh, con el siguiente contenido:
M/!bi !sh echo Mira "a"NI soO u script/

Intentamos ejecutarlo con .Sscript.sh y no *unciona. @sto es porque la eAtensin sh no es lo que hace que sea ejecutable. 'ara que se pueda ejecutar tenemos que darle permisos de ejecucin:
$ ch"od *6 script.sh

,hora s es ejecutable. @l programa consta de dos lineas: 2n comentario, desde la aparicin de T hasta el *inal de esa linea, donde se indica al shell con la secuencia T5SbinSsh que /bin/sh es el programa que se debe usar para ejecutar este *ichero. o 2n comando que muestra un teAto en stdin. @s la primera linea /ejecutable/, ya que los comentarios son ignorados por el int!rprete. +.#. 6ariables 6ol?er arriba.
o

2na ?ariable es un contenedor. 1onsta de un identi*icador que la distingue de otra Esu nombreF y de un contenido. &a relacin entre ?ariable y contenido es de equi?alencia. 'or lo general las ?ariables en shell no tienen tipos asociados y se de*inen de la siguiente *orma: identi*icador U contenido @jemplos:
M i 3ale $ i<$ M I 3ale echo I<echo M "s2 3ale =ola "u do/ "s2<C=ola "u do/C

1uidado: si dejamos espacios entre el U y el identi*icador o el ?alor el shell creer% que son comandos a ejecutar y no la asignacin de una ?ariable. 'ara acceder al contenido de una ?ariable empleamos Q delante de su identi*icador: Qidenti*icador @jemplos:
$ i<$ > echo $i $ "s2<CMola "u do/C > echo $"s2 $ 0u<echo> $0u 2oo/

1uando empleamos Qidenti*icador el shell busca el ?alor almacenado en la ?ariable asociada a ese identi*icador y lo utiliDa para reemplaDar esa ocurrencia de Qidenti*icador.

+.(. &inea de comandos 6ol?er arriba. 1uando se ejecuta nuestro programa en shell hay una serie de ?ariables que siempre estar%n disponibles, entre ellas las que nos permiten acceder a los distintos argumentos con los que *ue ejecutado nuestro script. QP contiene el nombre nombre de nuestro script o QT el nKmero de par%metros con los que se ha in?ocado al shell o Qn los par%metros, con n de 1 a V Ea QTF o QQ el 'IC de nuestro proceso o QL todos los par%metros menos QP +.+. &a salida de los programas 6ol?er arriba.
o

1uando se ejecuta un programa, un comando 23I4 es un programa, podemos, a parte de redirigir su entrada y su salida, recoger el resultado de su ejecucin y su salida. @l resultado es un ?alor num!rico, por lo general cero si todo ha ido bien, y distinto de cero si ha habido alguna clase de error. &a salida del programa es lo que obtendramos en stdin y stdout.
o

Q" resultado del Kltimo programa ejecutado @jemplo:


$ ls pirulotropical 2> /dev/null > echo $J $ ls > /dev/null > echo $J

QEcomandoF

la salida de comando Eesto es equi?alente al uso de comillas in?ertidas, pero por simplicidad ?amos a utiliDar esta ?ersinF @jemplo:
$ salida1ls<$PlsQ > echo $salida1ls o

eAit @30@)7 termina nuestro programa con el ?alor de salida @30@)7

@jercicio 1: realiDar un script que dado un directorio, cree un archi?o tar comprimido con gDip y con nombre igual a la *echa en *ormato yyyyBmmBdd seguido del nombre del directorio acabado en .tar.gD. @jemplo: aplicado sobre tmp obtendramos BM #PP+BP+BP(tmp.tar.gD.

+... 7peraciones aritm!ticas 6ol?er arriba. 'ara que el shell e?alue una operacin aritm!tica y no la tome como argumentos de un comando, por ejemplo:
$ echo $*$

Si queremos que sustituya la operacin por su ?alor emplearemos: QEEeApresinFF e?alua la eApresin aritm!tica y reemplaDa el bloque por el resultado @jemplo:
$ echo $PP$*$QQ

,lgunos operadores aritm!ticos soportados:


o o o o o o

J suma L mutiplicacin B resta S di?isin entera W resto de la di?isin entera E F agrupar operaciones

@jercicio #: realiDar un script que dado un nKmero NnN muestre los dieD primeros elementos de su tabla de multiplicar, mostrando el resultado en la *orma: i A n U resultado.

+.8. 1ondicionales 6ol?er arriba. @Aiste un comando para e?aluar condiciones, y que nos permitir% que nuestros programas /tomen decisiones/: test eApresion

9 eApresion : @ste comando e?alua eApresion, y si e?alua a cierto, de?uel?e cero EtrueF, o en otro caso 1 E*alseF. Si no hay eApresin, test siempre de?uel?e *also. @ste comportamiento puede ser algo con*uso, ya en lgica los ?alores cierto y *also suelen ser al contrario. 0est soporta gran cantidad de operadores, algunos son:
o o o o o o o o o o o

o o

o o o o o o o

Bd *ichero cierto si *ichero eAiste y es un directorio Be *ichero cierto si *ichero eAiste, independientemente del tipo que sea B* *ichero cierto si *ichero eAiste y es un *ichero normal Br *ichero cierto si *ichero eAiste y se puede leer Bs *ichero cierto si *ichero eAiste y tiene tama-o mayor que cero B> *ichero cierto si *ichero eAiste y es se puede escribir sobre !l BA *ichero cierto si *ichero eAiste y es ejecutable n1 Beq n# cierto si los enteros n1 y n# son iguales EequalF n1 Bne n# cierto si los enteros n1 y n# no son iguales Enot equalF n1 Bgt n# cierto si el enteros n1 es mayor que n# Egreater thanF n1 Bge n# cierto si los enteros n1 y n# son iguales o n1 es mayor que n# Egreater equalF n1 Blt n# cierto si el enteros n1 es menor que n# Elesser thanF n1 Ble n# cierto si los enteros n1 y n# son iguales o n1 es menor que n# Elesser equalF s1 U s# cierto si las cadenas de teAto s1 y s# son id!nticas s1 5U s# cierto si las cadenas de teAto s1 y s# no son id!nticas s1 X s# cierto si la cadena de teAto s1 es menor que s# s1 M s# cierto si la cadena de teAto s1 es mayor que s# Bn cadena cierto si la longitud de la cadena de teAto es distinta de cero 5 eApresion cierto si eApresion es *alsa EnegacinF eApresion1 Ba eApresion# cierto si eApresion1 y eApresion# son ciertas E,3C entre eApresiones, producto lgicoF

eApresion1 Bo eApresion# cierto si eApresion1 o eApresion# son ciertas E7) entre eApresiones, suma lgicaF

,dem%s eAisten los operadores lgicos OO E,3C, multiplicacin lgicaF y YY E7), suma lgicaF, que se puede aplicar al ?alor de salida de los programas:
$ $ $ $ $ $ $ $ true && true > echo $J true && 0alse > echo $J 0alse && true > echo $J 0alse && 0alse > echo $J true ,, true > echo $J true ,, 0alse > echo $J 0alse ,, true > echo $J 0alse ,, 0alse > echo $J

@l sistema de e?aluacin del shell es pereDoso y ?a de iDquierda a derecha. Si se encuentra la suma lgica true YY ,&Z7, ,&Z7 no se e?aluar% porque se asume que cierto o *also o cierto o cierto siempre es cierto. @Aplicacin: @n la suma lgica E7), es decir smbolo YYF si uno de los ?alores es true entonces la suma lgica tendr% ?alor true as que no es necesario seguir en?aluando el otro elemento. 'or esta raDn si se empieDa con el ?alor de la iDquierda y este contiene true entonces la operacin se para y se de?uel?e directamente true. 6ease suma lgica: *alseJ*alseU*alse *alseJtrueUtrue trueJ*alseUtrue [ *in de ejecucin tras e?aluar el primer termino trueJtrueUtrue Eojo, suma lgica, no binariaF [ *in de ejecucin tras e?aluar el primer termino @n el producto lgico E,3C, es decir smbolo OOF si uno de los elementos de la operacin es *alse, la operacin de?uel?e un *alse. ,l empeDar por el termino de la iDquierda si este contiene *alse, se para la operacin y se de?uel?e un *alse. 6ease producto lgico: *alseL*alseU*alse [ *in de ejecucin tras e?aluar el primer termino *alseLtrueU*alse [ *in de ejecucin tras e?aluar el primer termino trueL*alseU*alse trueLtrueUtrue @s algo bueno que el sistema de e?aluacin sea /pereDoso/ porque el tiempo de ejecucin se reduce a la mitad si no se e?alua el ?alor de ?erdad del siguiente termino tras la e?aluacin del primero.

+.8.1. i* ... then ... 9 else ... : 6ol?er arriba.

@sta es la principal estructura que nos permitir% ejecutar un bloque de cdigo, o Ealternati?amenteF otro, dependiendo de como se e?alue una condicin.
o

i* 173CI1I73R then bloque de comandos *i i* 173CI1I73R then bloque de comandos b1 else bloque de comandos b# *i

@n el primer caso el bloque de comandos se ejecutar% solo si la condicin es e?aluada a cierto. @n el segundo caso el bloque b1 se ejecutar% si la condicin es e?aluada a cierto, y sino se ejecutar% el bloque b#. &a condicin puede ser, por ejemplo, una llamada al comando test o una operacin lgica entre los ?alores de salida de di*erentes comandos. read linea T comparamos cadenas de teAto, as que usamos comillas
i0 # C$li eaC < CsecretoC %> the echo bi 2o/ 0i i0 / $Ppi 2 +c $ $R2F$STF(F$(( > <e">!de3! ull<!e">Q> the echo ;a "NAui a $R2F$STF(F$(( o respo de else echo ;a "NAui a $R2F$STF(F$(( estN ah?/ 0i

@jercicio (: realiDar un script que, dado un nKmero, indique si es o no di?isible entre 1P1. Si no se proporciona un nKmero debe mostrar como usar el programa.

+.;. <ucles 6ol?er arriba. @l shell aporta mecanismos para realiDar tareas repetiti?as mediante el empleo de estructuras que permiten repetir un bloque de comandos. +.;.1. *or ... in ... 6ol?er arriba. @sta estructura permite repetir un bloque de comandos asignando ?alores de una serie a una ?ariable en cada iteracin. *or 6,)I,<&@ in S@)I@R do bloque de comandos done @n cada iteracin la ?ariable 6,)I,<&@ toma un ?alor de S@)I@, que en caso de no contener elementos har% que no se ejecute nada y se de?uel?a un ?alor P.

@n caso de que se ejecuten comandos, el resultado de?uelto tras el bucle es el del Kltimo comando ejecutado. @jemplos de bucle:
o M eAui3ale te a seA $ L 0or i i $ 2 & ) L> do echo $i do e M lo "is"o pero co palabras 0or palabra i u o dos tres cuatro ci co> do echo $palabra do e

@jercicio +: realiDar un script que dado un nKmero NnN muestre los dieD primeros elementos de su tabla de multiplicar, mostrando el resultado en la *orma: i A n U resultado. @mplear un bucle y seq Esi est% disponibleF. Si no se proporciona un nKmero, mostrar como se usa el programa. @jercicio .: realiDar un script que dado una lista de directorios, cree un archi?o tar comprimido con gDip con nombre igual a la *echa en *ormato yyyyBmmB dd.tar.gD. ,dem%s se generar% un *ichero yyyyBmmBdd.lst con los nombres de los directorios contenidos en el archi?o tar, 237 '7) &I3@, usando un bucle. Si el *ichero lst eAiste, mostrar un error y terminar el programa. Si alguno de los elementos no es un directorio, mostrar un error y *inaliDar el programa.

+.;.#. )ompiendo un bucle: brea= 6ol?er arriba. @n cualquier momento un bucle puede ser interrumpido mediante el uso de brea=, de *orma que tras ser ejecutado ese comando el control pasa al siguiente comando despu!s del done. @jemplo de uso de brea=:
0or ele"e to i U> do echo Vri"er ele"e to $ele"e to brea5 echo Esto u ca se lle2a a e.ecutar do e echo -e2ui"os co el pro2ra"a

+.;.(. >hile ... 6ol?er arriba. Se trata de otra estructura de bucle que permite ejecutar un bloque de comandos mientras se e?alue una condicin a cierto:
Bhile CONDICION> do bloAue de co"a dos do e

@jercicio 8: realiDar un script que permita adi?inar al usuario cual es su 'IC. @l script pide un nKmero al usuario y cada ?eD que lo haga debe indicar al usuario si el 'IC es mayor o menor que el nKmero introducido. 1uando se adi?ina el ?alor, se deben mostrar los intentos empleados.

$e parece correcto poner los ejercicios resueltos, ya que asi se podran ?er lo errores y corregirlos. ,. @jercicios resueltos:
o

@jercicio 1
M/!bi !sh tar c30W $Pdate C*DE+D"+DdCQ$$FtarF2W $$

@jercicio #
M/!bi echo echo echo echo echo echo echo echo echo echo !sh $ 6 $$ < $PP$U$$QQ 2 6 $$ < $PP2U$$QQ & 6 $$ < $PP&U$$QQ ) 6 $$ < $PP)U$$QQ L 6 $$ < $PPLU$$QQ S 6 $$ < $PPSU$$QQ ' 6 $$ < $PP'U$$QQ T 6 $$ < $PPTU$$QQ R 6 $$ < $PPRU$$QQ $( 6 $$ < $PP$(U$$QQ

@jercicio (
M/!bi !sh i0 # $M + e $ %> the echo Uso@ $( u"ero e6it $ 0i i0 # $PP$$D$($QQ +eA ( %> the echo $$ es di3isible e tre $($ else echo $$ o es di3isible e tre $($ 0i

@jercicio +
M/!bi !sh 0or i i $PseA $ $(Q> do echo $i 6 $$ < $PP$iU$$QQ do e

@jercicio .
M/!bi !sh i0 # $M +eA ( %> the echo Uso@ $( directorios e6it $ 0i

FEC=8<$Pdate C*DE+D"+DdCQ i0 # +e $FEC=8Flst %> the echo Error@ El 0ichero lst Oa e6isteF e6it $ 0i 0or directorio i $U> do i0 / # +d $directorio %> the echo Error@ $directorio o es u directorio e6it $ 0i do e M podr?a ser@ echo $U , tr C C CX C > $FEC=8Flst M pero o se usar?a el bucle >Q touch $FEC=8Flst 0or directorio i $U> do echo $directorio >> $FEC=8Flst do e tar c0W $FEC=8FtarF2W $U o

@jercicio 8
M/!bi !sh VID<$$ INTENTO-<$ echo + CCual es "i VIDJ C read li ea Bhile # $li ea + e $VID %> do i0 # $li ea +2t $VID %> the echo Mi VID es "e or Aue $li ea else echo Mi VID es "aOor Aue $li ea 0i echo + CCual es "i VIDJ C read li ea INTENTO-<$PP$INTENTO-*$QQ do e echo 8certaste/ =as e"pleado $INTENTO- i te tos

Anda mungkin juga menyukai