Manual Linux Práctico PERSONAL

43
Manual Linux práctico CONTENIDO 1. INTRODUCCION 1.1. HISTORIA 2. CONCEPTOS BASICOS 3. INST ALACION DE LINUX 4. CONCEPTOS BASICOS DE T ERMINAL. 5. COMANDOS DEL SHELL 5.1. COMANDOS DE MANI PULACION DE DIRECTORIOS 5.2. COMANDOS DE MANEJO DE ARC HIVOS 5.3. COMANDOS DE VISU AL IZACION DE ARCHIV OS Y OTROS COMANDOS 6. PERNISOS CON EL COMANDO ch!" #. REDIRECCIONAMIENTO Y T UBERIAS $PIPES% &. EDITOR DE TEX TOS '( ). USUARIOS ).1. TIPOS DE USUARIOS ).2. CREACION DE USUARIOS 1*. COMANDO +, 11. INTRODUCCION AL SHELL SCRIPT I 11.1. V ARIA VLES 11.2. CONCEPTO DE V ALOR DE RETORNO 11.3. EVALU ACION DE CONDICIONES

Transcript of Manual Linux Práctico PERSONAL

Page 1: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 1/43

Manual Linux práctico

CONTENIDO

1. INTRODUCCION1.1. HISTORIA

2. CONCEPTOS BASICOS

3. INSTALACION DE LINUX

4. CONCEPTOS BASICOS DE TERMINAL.

5. COMANDOS DEL SHELL

5.1. COMANDOS DE MANIPULACION DE DIRECTORIOS

5.2. COMANDOS DE MANEJO DE ARCHIVOS

5.3. COMANDOS DE VISUALIZACION DE ARCHIVOS Y OTROS

COMANDOS

6. PERNISOS CON EL COMANDO ch!"

#. REDIRECCIONAMIENTO Y TUBERIAS $PIPES%

&. EDITOR DE TEXTOS '(

). USUARIOS

).1. TIPOS DE USUARIOS

).2. CREACION DE USUARIOS

1*. COMANDO +,

11. INTRODUCCION AL SHELL SCRIPT I

11.1. VARIAVLES

11.2. CONCEPTO DE VALOR DE RETORNO

11.3. EVALUACION DE CONDICIONES

Page 2: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 2/43

12. ESTRUCTURAS DE -LUJO

13. SHELL SCRIPT II

14. ENTORNO RA-ICO DE LINUX

En esta parte te ponemos al día sobre qué es GNU/Linux y algunos pequeñosdetalles que ay que conocer acerca de él antes de comen!ar a instalarlo ousarlo"INTRODUCCIONLas características más notables son#

• $ro%iene de UN&'( con características similares( y es casi un deri%ado deél"

• Es parte del proyecto GNU( lo que signi)ca( entre otras mucas cosas(

que es libre y que mucas %eces no estás obligado a pagar por él"$uedes usarlo de modo gratuito y además puedes modi)car su c*digo+uente( para adaptarlo a tus propias necesidades o para contribuir en sucontinuo desarrollo( en el que toman parte programadores de todo elmundo"

• Es potente( seguro y estable" ,ebido a ello resulta un sistema operati%oideal para ser%idores ya que cumple muy bien esta +unci*n aunque comosistema operati%o de o)cina( de escritorio o de publicaci*n también esexcelente"

• Es un sistema multiusuario real( multitarea y +unciona de manera muyproducti%a en redes"

-orma de traba.o" ernel o n0cleo del 12 reali!a las tareas de más ba.oni%el como acceso a la maquina( mane.o de memoria( etc" &nterprete decomandos# 32U4NE 15ELL 15( 4E,U6E, 15ELL ( 615EL y otros"

HISTORIAEl creador de Linux" 1u nombre es L(/,+ T!0'"+" $uede decirse que Linus

 7ro%alds cre* este sistema operati%o en 8998" Escribi* un E4NEL :parteprincipal de un sistema operati%o; y lo de.* a disposici*n de sus amigos y luegode toda la &nternet para que cualquiera pudiese me.orarlo"<lg0n tiempo más tarde( para adaptar el sistema operati%o y +acilitar lainstalaci*n( nacieron las compañías distribuidoras de Linux" Entre ellas

Page 3: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 3/43

destacan R"H D(/ C"0 S,SE M/"07... Estas distribuidoraspueden cobrar por o+recer sus productos en 6, o en alg0n otro soporte( perodeben poner su c*digo a disposici*n del p0blico" <ctualmente Linus 7or%aldssigue coordinando el traba.o de los programadores de todo el mundo en eln0cleo del sistema operati%o para me.orarlo y adaptarlo al nue%o ard=are"

>6abe la posibilidad de preguntarse cuál es la me.or distribuci*n de Linux?GNU/Linux tiene mucas distribuciones( y por lo general( no existe unadistribuci*n me.or que las demás( cada una de ellas tiene sus puntos a +a%or endeterminados aspectos" <sí( ,ebian es una distribuci*n que no es realmentecomercial en sí como lo son la mayoría de las otras" Mandra@e( tiene unamáquina con recursos su)cientes( o+rece una instalaci*n y con)guraci*nsencilla y un entorno grá)co personali!ado ideal para no perderse al principio"

>$uedo tener Aindo=s y Linux en la misma máquina? B6laroC 6omo %eremosmás adelante la cla%e está en particionar el disco duro( para que Aindo=s useuna parte y Linux use otra( de manera que no inter)eran" 7ambién como%eremos después( el cargador de arranque de Linux te permitirá elegir qué

sistema operati%o iniciar"

CONCEPTOS BASICOSE 00/8,"D Es lo que pasa cuando nuestra máquina arranca y tenemos queelegir un sistema operati%o" En el principio del disco duro o M34 o en unapartici*n queda instalado con Linux un cargador de arranque" Los dos másusados son L&L2 :L&nux L2ader; y G4U3( que nos permite escoger cualquierade los sistemas operati%os que se encuentren instalados en nuestro equipo"

S(+ " 0ch('!+.9 +orma de escribir los datos en el disco duro" El sistemade arci%os nati%o de Linux es el E'7" 2tros más conocidos son E'7F(4eiser-1 y '-1"

E+0,c,0 " "(0c!0(!+ / L(/,:

D(0c!0(!

D+c0(;c(</

/ Es la raí! del sistema de directorios" <quí se monta la partici*nprincipal Linux E'7"

/etc 6ontiene los arci%os de con)guraci*n de la mayoría de los programas"

/ome 6ontiene los arci%os personales de los usuarios"

/bin 6ontiene comandos básicos y mucos programas"

/de% 6ontiene arci%os simb*licos que representan partes del ard=are(

Page 4: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 4/43

D(0c!0(!

D+c0(;c(</

tales como discos duros( memoria"""

/mnt 6ontiene subdirectorios donde se montan :se enla!a con; otrasparticiones de disco duro( 6,42Ms( etc"

/tmp -iceros temporales o de recursos de programas"

/usr $rogramas y librerías instalados con la distribuci*n

/usr/local

$rogramas y librerías instalados por el administrador

/sbin 6omandos administrati%os

/lib Librerías %arias y m*dulos :tro!os; del @ernel

/%ar,atos %arios como arci%os de log :registro de acti%idad; deprogramas( bases de datos( contenidos del ser%idor =eb( copias deseguridad"""

/proc &n+ormaci*n temporal sobre los procesos del sistema :explicaremos

esto más en pro+undidad posteriormente;"

N!0+ " 0ch('!+Los nombres de arci%os en Linux :como en todos los UN&'; distinguenmay0sculas de min0sculas"En Linux los arci%os no tienen por qué tener una extensi*n" La suelen tener amodo orientati%o( pero no es en absoluto necesario" Linux sabe qué contienecada arci%o independientemente de cuál sea su extensi*n" $ueden tenerasta más de HH caracteres" Los )ceros y directorios ocultos en Linuxcomien!an su nombre por un punto :";S!=>0 "(c(!/ ;0 (/,:El so+t=are para Linux lo podemos encontrar de dos +ormas# en un paquete

binario o en un paquete con su c*digo +uente"

L!+ ;8,+ (/0(!+

Existen %arios tipos de paquetes binarios" 7odos tienen una característica encom0n( y es que contienen c*digo de máquina( no c*digo +uente( por eso cadatipo de procesador necesita su propia %ersi*n de cada paquete" <l aber %ariasdistribuciones de Linux existen %arios tipos de paquetes binarios( abiendo

Page 5: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 5/43

Page 6: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 6/43

Page 7: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 7/43

además de %arios asistentes sencillos para cambiar la con)guraci*n delard=are"

La =eb o)cial  de Mandra@e nos permite descargarnos su paquete",eberemos buscar las imágenes &12 :arci%os "iso; y descargarlas"

o RedHat/Fedora Linux # -edora es la distribuci*n libre  :gratuita; de lacompañía 4ed5at( y 4ed5at Linux es su distribuci*n comercial" <mbasson similares( sobre todo dedicada al usuario medio" $odrían ser lasegunda distribuci*n más sencilla"

INSTALACION DE LINUX

1ituaciones importantes dentro de la instalaci*n#

D Oeri)car el ard=are básico( ,, PG3( PHH M5Q( 4<M 8P( 6,42M( otros"D&nstalaci*n en una nue%a partici*n" 2pcional con arranque dual"D &nstalaci*n mediante el uso de una maquina %irtual"D $articionamiento del sistema" $articionamiento automatico o manual con ,&1 ,4U&,# /52ME( /( 1A<$( /bootD Ni%el de seguridad# alto( intermedio( ning0n )re=allD contraseña del rootD paquetes a instalar" Editores( inter+a! gra)ca ,E o GN2ME( lengua.es( etc"D 1er%icios luego de la instalaci*n pueden con)gurarse" +tp( ttp( etc

TERMINAL O SHELL

$rimero aremos un estudio de los comandos mas usados en Linux en modo

texto es decir utili!ando un terminal"

Una 7E4M&N<L :o un 15ELL( o un &N7R4$4E7E ,E 62M<N,21( ambos casisin*nimos de 7E4M&N<L; es una %entana que nos permite digitar comandos"

La manera más abitual de administrar una máquina Linux :instalar paquetes(%er los registros de acti%idad( crear o modi)car usuarios"""; suele acerse desdeun terminal o intérprete de comandos( que es en modo texto( y generalmentenos muestra un $42M$7" Un prompt es lo que el intérprete de comandosescribe automáticamente en cada línea antes de que nosotros podamos darleinstrucciones mediante 62M<N,21"

<parte de dar instrucciones a nuestra máquina( desde una terminal podremoseditar textos( arci%os de con)guraci*n( apagar y reiniciar el sistema( instalarnue%os programas( leer el correo y mucas cosas más" <prenderemos que lossistemas grá)cos no son imprescindibles"

Page 8: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 8/43

Conceptos básicos de la terminal BASH

6uando arranquemos nuestra máquina con Linux y termine de cargar todos losprocesos iníciales( o bien %eremos una pantalla grá)ca de login o una de texto"Es posible que no podamos acceder a la primera terminal porque qui!ás estésiendo utili!ada por los procesos de login grá)co si es que ya emos ingresadodesde allí" Las terminales se suelen nombrar ttyH para la primera( tty8 para lasegunda( y así sucesi%amente"

6onsideraciones sobre#D,irectorio padre ""D,irectorio raí! /D,irectorio actual "D,irectorio casa 52ME

COMANDOS c" !;c ;h0ch('!+

L+ listan los contenidos de directorio" ,ir( %dir2pciones Dl +ormato ampliado

Da ocultosDt clasi)ca por ora

E.emplos ls( ls aS( ls /ome/S

M7"(0  crea directorios

E.emplos m@dir programasM@dir programas/.a%a programas/%isual

E.ercicio# crear una estructura .erárquica de directorios

0"(0 borra directorios %acios 

e.emplo rmdir programas

c" cambia de directoriossintaxis cd pat/directorioe.emplo cd /ome

cd ""cd "

cdcd T52ME

;>" imprime el nombre del directorio actual y su ruta completa

c; copia )ceros y directoriossintaxis cp pat/origen/arci%o pat/destinoe.emplos cp /bin/0name /ome/usuario

Page 9: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 9/43

e.ercicios# planteada la estructura de directorios copiar arci%os de di+erentesubicaciones

0 borra )ceros o directoriossintaxis rm opciones )ceroV

Di pide con)rmaci*n

D+ no pide con)rmaci*nDr borra recursi%amente arboles de directorio

e.emplo rm + programas/S

'  mue%e renombra )cerossintaxis cp Dopciones pat/origen/arci%o pat/destino/arci%o

D+ no pide con)rmaci*nDi pide con)rmaci*n cuando destino existe

L/ crea enlaces entre )ceros :accesos directos;1intaxis ln opcion arci%o arci%oInue%o

D+ omite los mensa.es del sistemaE.emplo cp /bin/tar "

m% tar olaln ola enlace

/"  sir%e para buscar arci%os

sintaxis )nd Wpat VX Dopciones WexpresionesXDname el arci%o a buscarDperm )ceros con tales permisosDtype )ceros de tal tipo

E.emplos )nd Dname ola)nd / Dname ola-ind Dperm YYY

c %isuali!a arci%ossintaxis cat Dopciones arci%e

Du salida sin buZerD% imprime los caracteres

E.emplo cat arci%e  6at arci%o8 arci%oredireccionamiento6at u ; nombres "D escribir el contenido del arci%o

!0 se utili!a para )ltrar arci%os un n0mero determinado en pantallae.emplo ls /bin [ more

cat arci%oLargo [more

Page 10: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 10/43

OTROS COMANDOS,ate despliega la +ecanl numero de líneas de un arci%o=c cuenta el n0mero de líneas( palabras y caracteres de un arci%o

ls \ listado=c Dc listado

 =c Dl listadoeco saca un mensa.e en pantallaclear borra pantallasort ordena arci%os de texto

sort Dn arci%osort Dr arci%o

grep busca cadena en un arci%ogrep .uan nombres

man ayudamail despliega mensa.es del usuario=rite escrib un mensa.e a un usuariops lista los procesos actuales

Da todosDall listado largoDe in+ormaci*n de todos los procesos que se e.ecutan aoraDe+ +ormato largoDe< +ormato largoDx presenta el estado de cada proceso

pstree presenta los procesos en +orma de arbol

ill mata procesosill D9 pid

6al calendarioAo indica el o los usuarios conectados

pass=d cambiar cla%emesg autori!a o no recibir mensa.es Dn Dysleep suspende la e.ecuci*n en segundos

PERMISOS CON EL COMANDO ch!"$ermite cambiar los atributos de lectura( escritura y e.ecuci*n de un arci%o odirectorio

1intaxis cmod UG2 nombreIarci%o$ numero que cambia los permisos del propietarioG numero que cambia los permisos del grupo2 numero que cambia los permisos del otros

Dr = x r = x r = x  8 8 8

  $ G 2' ] 8A ] 4 ]

Page 11: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 11/43

E.emplo cmod YF arci%o 

2tra +orma de cambiar los atributos mediante el modo simb*lico#

u ususariog grupoo otrosa todos^ añadeD quita] asigna

E.emplo cmod a]r(u^=(o^x arci%o

cmod go]x arci%ocmod a^r=x arci%o

R"(0cc(!/(/! @ ,0+ $;(;+% 4edirecciona la entrada y salida estándarE.emplosp=d \ arci%ocat \ arci%ocat u \\ arci%o=o [ =c lcat nombres [ sort ^8cat nombres [ sort ^ncat arci%e [ grep luisgrep luis [ arci%o

EDITOR DE TEXTOS VIM BASICO

4*5 es un editor de textos para Linux. #s un derivado de 4*, 4*5 significa 4* i5proved,es decir, el mismo editor 4* pero me/orado. & en este cap6tulo aprenderemos a hacer un uso b"sico de este fabuloso editor. 4*5 tiene dos grandes modos para funcionar, el modo de edición y el modo comandos.Para pasar del modo comandos (!ue es en el !ue se inicia 4*5 al modo edición, pulsamosla tecla I o Insert. Para pasar del modo edición al modo comandos pulsaremos la tecla Esc.Para iniciar 4*5, haremos lo siguiente7

$ vim <fichero>

4*5 iniciar" en el 85odo #dición8 !ue explicar' en la siguiente sección.

Page 12: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 12/43

M!"! E"(c(</

#ste es el modo en el !ue podremos editar un texto, o crear uno nuevo... 9i pulsamos latecla I o Insert otra ve: cambiaremos el modo *nsert por el modo 0eplace. No creo !uehaya !ue explicar mucho las diferencias entre insertar texto o reempla:ar el texto. Paramovernos por el fichero podemos util:ar las flechas,

Re.Pág y

Av.Pág.

N!

Para volver al modo comandos, sirve con pulsar la tecla Esc.

M!"! c!/"!+

#ste es el modo m"s interesante de 4*5, con 'l podemos hacer cosas muy curiosas, como por e/emplo, activar el resaltado de sintaxis, deshacer, abrir un nuevo fichero, guardar, etc..#n la siguiente tabla explicar' los comandos !ue pueden resultar m"s interesantes.

Tabla 4.1. Comandos más usuales en VI

C!/"! D+c0(;c(</E;! " ,+!

$+( ;(c%

#= Guarda el buZer en el )cero DD

#= W)ceroX Guarda el buZer en )cero :como un

1a%e as""";#= _/)cerito

#q 1alir de O&M DD

#qC 1alir de O&M sin guardar los cambios DD

#=q 1al%ar y guardar DD

#u ,esacer DD

C0DR :`4; 4eacer DD

#d * #dN 3orrar la línea corriente o borrar Nlíneas a partir de la actual" DD

#syntax W on [ oZ X <cti%a/,esacti%a el resaltado desintaxis #syntax on

Page 13: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 13/43

C!/"! D+c0(;c(</E;! " ,+!

$+( ;(c%

#s/Wpatr*nX/

Wreempla!oX/g

1ustituye Wpatr*nX por Wreempla!oX en

la línea actual"s/oal/ola/g

#CWcomandoXWargumentosX

E.ecuta WcomandoX pasándole losargumentos WargumentosX en el sell

#Cgcc Dg D2H Doprueba prueba"c

#^Wn0meroX 3a.a Wn0meroX líneas #^

#DWn0meroX 1ube Wn0meroX líneas #D8

#Wn0meroX Oa a la línea Wn0meroX #8HY

#^/Wpatr*nX 3usca Wpatr*nX en el documento #^/donde te metes

E !"! +;c( VISUAL

Para entrar a este modo tenemos !ue pulsar v  en el modo comandos. Para salir de el pulsaremos Esc.#l modo 4*9);L nos permitir" eliminar grandes blo!ues de texto sin tener !ue ir borrandol6nea a l6nea. Para ello entraremos en el modo 4*9);L (pulsando v y nos moveremos con

los cursores para seleccionar el blo!ue !ue !ueremos eliminar. )na ve: tenemosseleccionado el blo!ue, pulsamos !u"r  y ya est", 4*5 nos informar" de !ue hemoseliminado un blo!ue de n l6neas.

#/ercicios7$crear un archivo !ue incluya las siguientes columnas7 numero apellido nombre tel'fono.

Page 14: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 14/43

Usuarios

 Linux es un sistema multiusuario por lo !ue es necesario la administración (segura de losdistintos usuarios !ue van a hacer uso de los recursos del sistema. <e momento no vamos adar grandes nociones de seguridad, pero s6 una introducción a los tipos de usuarios y !u'

 privilegios deben tener.

<entro de un sistema existen al menos = tipos de usuarios.

• Usuarios normales con m"s o menos privilegios !ue har"n uso de los recursos delsistema. 9on generalmente inexpertos y propensos a causar problemas.9implemente deben poder usar algunos programas y disponer de un directorio detraba/o.

• Usuarios de Sistema son a!uellos encargados de los demonios del sistema. #stosusuarios tendr"n los privilegios necesarios para poder hacer su tarea, gestionar estosusuarios es de gran importancia. (configurar servicios del sistema.

•  ROOT   >l lo puede todo, en principio no hay restricciones para >L.

 ?tro concepto !ue lleva a esta otra clasificación es, el de los usuarios de los servicios delhost. #ste tipo de usuarios simplemente accede remotamente a algunos servicios de nuestram"!uina, tales como correo$electrónico o @3P. #sto nos lleva a definir7

• Usuarios de login. #stos primeros, pueden hacer login en el sistema y usar una shellen 'l. #s decir, tienen una shell v"lida de inicio generalmente, /bin/bash.

• Usuarios sin login. #ste tipo de usuarios, bien son usuarios de sistema, o bien

usuarios de los servicios del host. #n ambos casos no pueden hacer login en elsistema directamente ni usar un shell. #n otras palabras, no tienen asignado un shellv"lido. 9u misión, es poseer algunos archivos y directorios del sistema, ymane/arlos restringidamente a trav's de algunos programas (el servidor @3P, elservidor de correo electrónico, etc. dar"n a los usuarios de los servicios del host los privilegios suficientes7 almacenar mensa/es, etc.. #n el caso de los usuarios desistema, poseer"n adem"s algunos procesos.

A"(/(+0c(</ " U+,0(!+.

La administración de usuarios se reali:a en todas las distribuciones de manera muy

 parecida, dada la herencia UNIX , aun!ue en el fondo todas hacen lo mismo.%Cómo a1adir un usuario al sistema Aay !ue seguir una serie de pasos !ue relatamos acontinuación. Pero antes veremos la estructura de los archivos !ue vamos a tocar.

• /etc/passwd $ ;rchivo !ue mantiene la base de datos de los usuarios del sistema ytiene la siguiente forma7

 

Page 15: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 15/43

nombre_de_usuario:password(si es shadow seráx):uid:gid:comentario:home_del_usuario:shell  #stos campos son7

o ombre de !suario $ #s el nombre con el !ue entrar" en el sistema.o "assword  $ La palabra de paso necesaria para entrar (cifrada. 9i nuestro

sistema usa shadoB (explicado despu's, este campo ser" una x 

o !# $ ()ser *< Número !ue lo identifica en el sistema, recordemos !ue losordenadores se llevan me/or con los números.

o %# $ (-roup *< Número !ue identifica al grupo principal al !ue perteneceel usuario.

o &omentario $ ?pcional, si es necesario aclarar algo, esto solo es para eladministrador, pues el sistema no lo usa.

o home_del_usuario $ 0uta absoluta del directorio de traba/o del usuario.

o 'hell  $ *nt'rprete de comandos del usuario, !ue ser" el !ue useinmediatamente despu's de entrar en el sistema, por defecto es /bin/bash.Para usuarios sin login, aun!ue puede !ue ahora no lo necesites, la shell nov"lida t6pica para poner en este campo es /bin/false.

• /etc/group  $ ;rchivo de los grupos del sistema. #l archivo tiene la siguienteestructura7

nombre_grupo:password:%#:lista_usuarios  

o ombre del %rupo $ Por defecto con los comandos habituales se crea ungrupo con el mismo nombre !ue el usuario creado, aun!ue pueden existir otros grupos con nombres espec6ficos.

o password $ 9e usa para dar a una serie de individuos un mismo directoriocon una cuenta común.

o %# $ (-roup *< Número de *dentificación en el 9istema del grupo.

o lista de usuarios !ue pertenecen al grupo, separados por comas.

• /etc/shadow $ Para sistemas !ue usen shadoB, !ue no es m"s !ue una medida deseguridad. Los sistemas !ue no usan shadoB guardan el passBord en /etc/passwd

Page 16: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 16/43

 pero este archivo tiene la peculiaridad de !ue debe ser legible por todo el mundo, sino, no podr6a ni hacerse un ls. #ste archivo podr6a caer en manos de un usarioileg6timo y este e/ercer t'cnicas de craceo sobre las claves. Como solución del problema lo !ue se hace es almacenar todos los datos de los usuarios en el/etc/password menos sus contrase1asD !ue se almacenan en /etc/shadow, el cual

s6 tiene restringidos los permisos y no es accesible por los usuarios normales.usuario:password:das del ltimo cambio: dias antes del cambio:iasdespues del cambio: tiempo de aviso:dias antes de lainhabilitacion: perido *ue lleva caducado:reservado: 

o !suario $ Nombre del usuarioo password $ ;!u6 s6, es el passBord cifrado.

o +iempo del ltimo cambio de password $ Pero el tiempo cuenta desdeel E de enero de EFGH, comien:o de la era )N*+.

o as antes del cambio $ Periodo (en d6as donde el passBord debe ser cambiado.

o ias despues del cambio $ #n los d6as despu's donde debe ser cambiado.

o +iempo del aviso $ Periodo en el !ue el sistema tiene !ue avisar de lanecesidad del cambio.

o #nhabilitaci,n $ <6as antes de la inhabilitacion de la cuenta.

o "erido caducado  $ <6as desde el E de enero de EFGH en el !ue la cuenta

est" deshabilitada.

o &ampo reservado 

adduser usuario ##### crea usuarios

$ohn ##single "ass%d.t&t ##### herramienta "ara ver la clave de usuario

g'i" #d roc()ou.t&t.g'

$ohn ##%ordlist /usr/share/%ordlist/roc()ou.t&t "ass%ords.t&t

Iien ahora, ya !ue conocemos la estructura de los archivos, creemos un nuevo usuario, sólo

tendremos !ue usar un editor, !ue por ra:ones de seguridad son vipw  para el archivo/etc/passwd y vigr para editar /etc/groupD ambos usan como editor el !ue est' en lavariable $-#+.  del sistema, y passwd para crear el passBord. 9igamos los siguientes pasos7

E. Lo primero es entrar como root

Page 17: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 17/43

01 $ su -21 password:31 4 vipw /etc/passwd 

J. ;ntes de nada, el comando su  se explica al final de este cap6tulo. &a estamoseditando el fichero /etc/passwd, ah6 estar"n las lineas de otros usuarios !ue yaest'n creados. #sto !ue sigue es un e/emplo.

51 prueba:x:1005:1005::/home/prueba:/bin/bash

Aemos escrito un nombre cual!uiera (prueba, el passBord le ponemos x dado !uees un sistema con shadoB. 9i !ueremos crear una cuenta sin contrase1a, en estecampo en ve: de la x no pondremos nada. ;<4#03#NC*;7 #sto es unconsiderable riesgo de seguridad. *ncluso una cuenta de usuario puede usarse parahallar información útil para posteriormente poder atacar un sistema.

G. ;hora hay !ue tocar en /etc/group para crear el grupo del usuario (todo usuariotiene un grupo principal, le damos el mismo nombre !ue al usuario, y el -*< !uehemos puesto antes, el EHHJ. Por supuesto, tanto los )*< como los -*< no puedenestar repetidos, as6 !ue nos aseguramos de coger uno !ue no est' ya cogido.#ntonces, hacemos7

61 4 vigr /etc/group

 prueba:x:1005:

F. #ditamos /etc/shadow 7

781  prueba:!:12173:0:99999:7:::

Iueno lo peor ser" calcular la fecha de creación pero sino randomi:ed( 7$. Nota!ue en el campo passBord le hemos puesto ! por!ue ahora le daremos un passBord

con passwd .

771 4 passwd prueba 701 -nter new !#9 password:

721 etpe new !#9 password:731

Page 18: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 18/43

#/ecutamos passBd y pasamos el nombre del usuario como argumento.

*ntroducimos el passBord para ese usuario, hay !ue darse cuenta de !ue amedida !ue escribimos, por ra:ones obvias de seguridad no se ir" escribiendo

nada.

0epetimos la passBordEJ. 9i no hay error, listo.

EK. ;hora le tenemos !ue crear el directorio de traba/o, por convenio los directorios detraba/o de los usuarios normales est"n ba/o /home, y suelen ser /home/usuario.

7;1 4 mdir /home/prueba

E. Copiamos los archivos de inicio desde /etc/sel  , !ue contiene principalmentearchivos de configuración por defecto.

7=1 4 cp /etc/se/"# /home/prueba

MH. & por último, hay !ue hacer !ue tome posesión de lo !ue es suyo7

071 4 chown prueba"prueba -$ /home/prueba

#ste último comando se explica m"s adelante. ;hora sólo falta hacer7

4 su - prueba$

3ambi'n, en ve: de usar su, podemos hacer login en el shell directamente con el nuevousuario creado para comprobar !ue lo hemos hecho correctamente.#sto es lo !ue hace cual!uier Linux para crear una cuenta. La forma de borrar un usuario es

igual de f"cil, borr"ndolo en /etc/passwd, /etc/group  y en /etc/shadow. Cual!uier rastro del usuario deber6a tambi'n ser eliminado, adem"s de !ue ser6a bastanterecomendable (si no necesario hacer una bús!ueda de los archivos !ue el usuariomantiene. #sta bús!ueda podr6a ser7

4 %ind / -uid uid&de&usuario ' archivos&de&usuario

Page 19: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 19/43

<e esta manera los podemos guardar, revisar y hacer lo conveniente con los archivos. 5"ssobre find en secciones posteriores.

##0C*C*?. )tili:ando los pasos anteriores crear EH usuarios diferentes (puede utili:ar elmismo *< de grupo.

E* C+A,-+ !

#l comando su (9et )ser est" relacionado con el login en el sistema y con los permisos. #luso principal de este comando es !ue un usuario normal ad!uiera los permisos de otrousuario del sistema (incluido root siempre y cuando sepa su passBord.

9intaxis7 su usuariosu O usuariosu

en Ubunto sudo su - esto permite ir a la cuenta de root 

La diferencia entre su usuario  y su usuario  es, !ue mientras !ue con el primer comando simplemente ad!uirimos los permisos de usuario, con el segundo comando escomo si estuvi'semos haciendo login desde el principio con usuario, as6, todas las variablesde entorno y dem"s ser"n cargadas igual !ue si hubi'semos hecho login realmente. #stotambi'n se aplica para root (su . La shell !ue se arranca mediante la segunda forma sellama  shell de login, y como puedes comprobar, no se puede suspender como hicimosanteriormente. 9alimos de ellas tambi'n con exit.

#l usuario root puede usar su o bien su  sin necesidad de introducir ningún passBord para ad!uirir en un shell los permisos de cual!uier usuario del sistema.

I,TR+-CCI+, A* !E** !CRIP

)n  script   es como se llama a un archivo (o con/unto de archivos !ue contieneinstrucciones (en nuestro caso comandos de bash, y !ue necesita de un programa ayudante para e/ecutarse (en nuestro caso la propia terminal bash ser" el programa ayudante. )nscript tiene cierta similitud con un programa, pero existen diferencias. -eneralmente, los programas est"n en lengua/e de m"!uina (la m"!uina lo entiende directamente, mientras!ue los scripts son archivos !ue contienen en formato texto los comandos o instrucciones

!ue la aplicación ayudante e/ecutar".

 MI PRIMER SCRIP BAS e"e#plo $%

#/emplo7 digita en el prompt del sistema miscript.sh

4?/bin/bash

Page 20: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 20/43

4 -sta lnea será ignorada

4 -sta tambi@n

echo ABolaA

echo A'o un script de shell1A

la primera l6nea7 4?/bin/bash caracter6stica de todos los scripts en Linux, no solamente

los de bash. 3ras 4?  indicamos la ruta a la aplicación ayudante, la !ue interpretar" loscomandos del archivo. #/ecutamos de la siguiente manera7

$ bash miscript"sh

Bola

'o un script de shell

?tra forma de e/ecutarlo es d"ndole permisos de e/ecución al archivo miscript.sh

$ chmod (x miscript"sh

$ "/miscript"sh

Bola

'o un script de shell

;l darle permisos de e/ecución, podemos e/ecutar ahora nuestro script como si de un programa normal se tratase. #sto es posible gracias a la primera l6nea del script, !ue hace!ue se llame inmediatamente a la aplicación ayudante para procesar los comandos. Aemos podido observar !ue a nivel del shell, nuestro script es un programa como otro cual!uiera,!ue podemos e/ecutar e incluso ponerlo en algún directorio listado en la variable de entorno$"C+B, como por e/emplo /usr/local/bin y e/ecutarlo como si de un programa del

Page 21: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 21/43

Page 22: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 22/43

#/ecutar el 9hell asi7 argumento.sh uno dos tres cuatro

; este tipo de argumentos se les denomina par"metros posicionales donde,TH hace referencia al nombre del comandoTE hace referencia al primer argumento posicional

TM hace referencia al segundo argumento posicional etcy T se referencia a todos los parametros

333333333comando borrar1 ) lim"iar

Ver 1 0ueve archivo a un basurero

mv T TA?5#basurero

 Ver0 Com"rueba si e&iste la car"eta basurero

if V $d TA?5#basurero W 7 thenmv T TA?5#basureroelseecho R la carpeta se est" creandoSsleep =mdir TA?5#basureromv T TA?5#basurerofi

Ver50 Com"rueba si e&iste la car"eta basurero

if test TY $e! H

#/ercicio X

crear<ir if test TY e! H

 then  faltan par"metroselse  mdir TA?5#TE TA?5#carpetasTETM TA?5#TET=  c TX TA?5#TET=

Page 23: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 23/43

then  echo Rfaltan argumentos S  exitelse  if V $d TA?5#basurero W 7 then

  mv T TA?5#basurero  elseecho R la carpeta se est" creandoS

  sleep =  mdir TA?5#basurero  mv T TA?5#basurero  fifi

at demonio

at6 lista los traba7os "lani8icados

atrm 19 borra el traba7o 19 "lani8icado

&ARIABLES e"e#plo '%

0ecordamos !ue una variable es un nombre al !ue le hacemos corresponder un valor. #stevalor puede ser un valor num'rico o bien una cadena de texto indistintamente en los scriptsde shell. Los nombres de las variables convienen !ue comience por una letra, despu'sveremos por !u'.

#n el siguiente e/emplo variables.sh aprenderemos a usar las variables en nuestros scripts7

4?/bin/bash

4 'cript de muestra del uso de las variables

4 Csignaci,n de una variable:

variableDE

otravariableD78

Page 24: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 24/43

terceraD0

resultado7D$FEG78/0H

resultado0D$F$variableG$otravariable/$terceraH

echo A A

echo A-l resultado de EG78/0 es $resultado7 IA

echo A*ue efectivamente coincide con $resultado0 A

echo A A

fraseDA#ntroduJca lo *ue usted *uiera:A

echo $frase

read entrada_del_usuario

echo A A

echo A!sted introduKo: $entrada_del_usuarioA

exit 8

0epasemos el e/emplo despacio. #n primer lugar tenemos la l6nea !ue ser" siempre la primera en nuestros scripts, y !ue ya conocemos, la !ue dice cu"l es el programa !uee/ecutar" las instrucciones del script.

9iguiendo tenemos la asignaci(n de algunas variables, esto es, estamos dando valor aalgunas variables !ue luego usaremos. ?bserva !ue entre el nombre y el valor, N? A;&#9P;C*?9, es variableQvalor. Procura recordarlo. ;hora cada variable tiene el valor !ue lehemos asignado. Podr6amos cambiarlo simplemente de la misma forma, pero poniendo otrovalor distinto, !ue sobreescribir6a a cual!uiera !ue tuviese antes la variable. ;s6,tercera)7 har6a !ue el valor de la variable tercera fuese de ah6 en adelante G.

<espu's nos encontramos con el comando $F H, !ue nos permite hacer operacionesaritm'ticas, obteniendo el resultado. #n la primera de esas l6neas, la variable resultado7

se !ueda con el valor resultante de efectuar la operación entre los números. #n la l6neasiguiente, vemos !ue para 0#@#0*0N?9 al valor !ue tiene una variable, colocamosdelante de su nombre el signo $. <onde !uiera !ue pongamos ese signo delante del nombre

Page 25: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 25/43

Page 26: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 26/43

!sted introduKo: Lo tecleo esta frase1

##0C*C*?7 reali:ar : Q aZb D las variables a y b son introducidas por teclado.

C)MAN*)S P)SIBLES e"e#plo + %#n un script pueden escribirse todos los comandos !ue existen en bashD esto incluyecual!uier programa, redirecciones de entrada o salida, pipes, etc.

  E.emlpoF"s

4?/bin/bash

M#_NC#COP-D/home

4 o mu adecuado:

ls l $M#_NC#COP-

4 Oastante meKor:

ls l A$M#_NC#COP-A

)tili:ar el comando chmod y luego e/ecutarlo el e/emplo.

CONCEPTO DE VALOR DE RETORNO ( EJEMPLO !

#n el shell bash (y por extensión, en nuestros scripts el valor de retorno del último programa o comando e/ecutado !ueda almacenado en la variable especial +, .

4eamos un e/emplo7

retorno.sh

4?/bin/bash

Page 27: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 27/43

echo APistando archivo existente111A

ls archivo_existente

echo A-l valor de retorno fue: $QA

echo A A

echo APistando archivo inexistente111A

ls archivo_inexistente

echo A-l valor de retorno fue: $QA

exit

#n el primer caso, pedimos a ls !ue liste un archivo existente. Lo lista con 'xito y por tantoel valor de retorno vale cero. #n el segundo caso le pedimos !ue liste un archivoinexistente. Como eso no es posible, el comando no termina con 'xito y el valor de retornoes distinto de cero.

La utilidad de conocer el valor de retorno al e/ecutar un programa en nuestros scripts salta ala vista7 cuando veamos las sentencias condicionales podremos hacer !ue el script haga unacosa u otra en función de si un programa terminó con 'xito o no.

$<1<4 $426E1<4 <4GUMEN721 : e.emplo ;

Los comandos !ue e/ecutamos normalmente pueden recibir opciones y argumentos o par"metros. como por e/emplo s - /bin . #n ese e/emplo, ls es el comando, $l es unaopción y bin es un argumento

;rgumento.sh

4?/bin/bash

echo AR$8 contiene $8A

echo AR$7 contiene $7A

echo AR$0 contiene $0A

echo A-n total ha $4 parametrosA

Page 28: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 28/43

,ale permisos y e.ecutalo de la siguiente +orma#

$ "/args"sh

$8 contiene 1/args1sh

$7 contiene

$0 contiene

-n total ha 8 parametros

$ "/args"sh buenos dias

$8 contiene 1/args1sh

$7 contiene buenos

$0 contiene dias

-n total ha 0 parametros

< este tipo de argumentos se les denomina parámetros posicionales del selldonde el parámetro TH a re+erencia al comando( T8 ace re+erencia al primerargumento( T ace re+erencia al segundo argumento y así sucesi%amente( el

parámetro TS ace re+erencia a todos los argumentos del comando" La %ariableT contiene el numero de argumentos o parámetros posicionales"

EJERCICIO  Utili!ar parámetros posicionales y reali!ar un 1ell que cree unárbol de directorios y copie un arci%o del directorio bin

EO<LU<6&2N ,E 62N,&6&2NE1"  $ejercicio 6 )$ermite acer que nuestro script se comporte de una +orma u otra seg0n elusuario introdu!ca uno u otro argumento( o seg0n una %ariable tenga tal o cual%alor"

#l comando !ue nos permite evaluar condiciones en bash es test. #l ,alor de retorno de

test ser" cero (H si la expresi(n es 4#0<;<#0; (30)#, y en cambio, ser" uno (E si laexpresión !ue le pasamos a test es @;L9; (@;L9#.

#/emplo comprobamos si dos números son iguales o no7 (escribir en el promt del sisteme

$ test 7 -e 7

$ echo +,

Page 29: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 29/43

8$ test 7 -e .

$ echo +,

7

;hora supón !ue antes de todos a!uellos comandos hacemos7

$ a)7

$ b).

$ test +a -e +a

)samos las variables Ta y Tb. No hay cambios, test reempla:a las variables por su valor ydespu's efectúa la comprobación, siendo el resultado final el mismo.

?tra forma de evaluar condiciones en lugar de test es utili:ar corchetes V W, hay !ue de/ar espacios.

$ 3 -gt 2

$ echo +,

8

9ignos de comprobaciones.$e! si son iguales$en no son iguales$gt es mayor !ue$ge es mayor o igual !ue$lt es menor !ue

$le es menor o igual !ue

#930)C3)0;9 C?N<*C*?N;L#9 C?N *@

Las estructuras condicionales tienen este aspecto7

if -9"-'#.7S then

Page 30: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 30/43

4 Olo*ue 7

elif -9"-'#.0S then

4 Olo*ue 0

else

4 Olo*ue 2

fi

( e"ercicio - %  bús!ueda.sh

!/bin/bash

if F $4 ne 0 HS then

  echo Aecesito dos argumentosI el primeroA

  echo Aes el fichero donde debo buscar A

  echo Ael segundo es lo *ue *uieres *ueA

  echo Abus*ue1A

  echo A A

  echo A!so: $8 <fichero> <patron_bus*ueda>A

  echo A A

  exit

fi

T#&B-.D$7

O!'U!-CD$0

if F ? e $T#&B-. HS then

Page 31: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 31/43

  echo A-l fichero no existeA

  exit

fi

!M_N-&-'DVcat A$T#&B-.A W grep count A$O!'U!-CAV

if F $!M_N-&-' e* 8 HS then

  echo A-l patron de bus*ueda $O!'U!-C no fue encontradoA

  echo Aen el fichero $T#&B-. A

else

  echo A-l patron de bus*ueda $O!'U!-C fue encontradoA

  echo Aen el fichero $T#&B-. $!M_N-&-' vecesA

fi

#/ecutar de esta forma ( b:s6ueda.sh archivo cadena;bus6ueda #ste e/emplo ya se va pareciendo a un programa de los buenos. #studi'moslo en detalle7#n primer lugar comprobamos !ue nos han pasado dos argumentos7 el fichero donde buscar 

y la cadena de bús!ueda. 9i no es as6, le indicamos al usuario cómo debe e/ecutar el script ysalimos.; continuación comprobamos !ue el fichero existe. 9i no es as6, advertimosconvenientemente y salimos.;hora viene la l6nea !ue hace todo el traba/o7 !M_N-&-'DVcat A$T#&B-.A W grep

count A$O!'U!-CAV  ;l entrecomillar con las comillas inclinadas el comando, susalida, en ve: de salir por pantalla, !uedar" guardada en la variable N)5[4#C#9. ;s6,mediante cat y el pipe, grep cuenta el número de veces !ue el valor de TI)92)#<; est"en el fichero, !ue nos !ueda guardado en TN)5[4#C#9.

#/ercicio7 reali:ar un 9hell !ue permita escoger opciones y e/ecutar las sentencias de la

opción se1alada.

E. Listar  M. *mprimir ruta con pBd

=. 4isuali:ar los procesos en e/ecucción

X. 9alir  

Page 32: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 32/43

C?5P0?I;0 #L 4;L?0 <# )N; 4;0*;IL# C?N CA!E

La estructura case7

4?/bin/bash

case $NC#COP- in

valor7)

4 Olo*ue 7

SS

valor0)

4 Olo*ue 0

SS

1

1

1

G)

4 !ltimo Olo*ue

SS

esac

valor7  y valor0 son valores !ue nosotros esperamos !ue la variable pueda contener, yIlo!ue E y Ilo!ue M son los blo!ues de comandos con lo !ue !ueremos !ue se haga encada caso. Podemos poner tantos valores reconocibles como !ueramos. Los puntos son precisamente para indicar a!uello. #l G (asterisco es un co#od.n, cual!uier cosa !ue nohaya coincidido en alguna de las de arriba coincidir" a!u6.

Page 33: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 33/43

( # "ercicio /  case.sh

4?/bin/bash

4 case1sh

if F $4 lt 7 HS then  echo A-rror1 -speraba al menos un parametroA  exit 7ficase $7 in

  opcion7)

  echo Aopcion7 es una opcion reconocidaA  exit 8  SS

  opcion0)  echo Aopcion0 es una opcion posibleA

exit 8  SS  linux)  echo ARAlinuxRA es un argumento reconocidoA

exit 8

  SS  G)  echo A"arametro no reconocidoA  exit 7  SSesac

#/ecuta de la siguiente manera7 case.shCase.sh OopcionECase.sh OopcionMCase.sh LinuxCase.sh par"metros

#/ercicios7 $ reali:ar un 9hell utili:ando case !ue permita escoger opciones y e/ecutar lassentencias de la opción se1alada.

E. Listar  

M. *mprimir ruta con pBd

=. 4isuali:ar los procesos en e/ecucción

X. 9alir  

#/ercicio7 reali:ar un 9hell utili:ando case !ue permita borrar archivos.

Page 34: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 34/43

Page 35: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 35/43

nombre&var es el nombre de una %ariable :el que nosotros queramos( y s*lo elnombre( no precedida de T;" 68   es una lista de elementos( que se lapodemos dar como en el e.emplo anterior( aí en ese comando( o podemosponer una %ariable que ya contenga una lista de elementos"

: e.ercicio 9 ; (+"!0.+h

4?/bin/bash

4 Pistador de archivos directorios ocultos

#D$7

if F J $# HS thenecho A-l primer argumento debe ser un directorioAexit 7

fi

if F ? d $# HS thenecho A-l directorio debe existirAexit 7

fi

for i in $#/1GS do

  echo A-ncontr@ el elemento oculto $iA

doneecho A'aliendo111A

 1G 5ace re+erencia a todos los arci%os y directorios ocultos de $#"

BUCLE CON FHILEEl otro tipo de bucle posible en basDscripting es el bucle while" Este bucle%iene a cumplir con el prop*sito de quiero que se aga esto mientras que sedé esta condici*n" 1u estructura es la siguiente#

while test &.#&#.S do4 &omandos a eKecutar

done

:e.ercicio 8H; c!/!.+h

4?/bin/bash

KD8

while F $K lt 78 HS do

Page 36: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 36/43

echo AK vale $KAKD$F$KZ7H

done4 C*ui sigue el fluKo de eKecucion normal del script

#ste e/emplo es interesante. La condición para !ue el bucle se siga e/ecutando es !ue /valga menos de EH. ?bserva la forma mediante la cual en cada ciclo del bucle sumamos E ala variable /.

3anto en el bucle for como en el while, podemos usar brea para indicar !ue !ueremossalir del bucle en cual!uier momento7

( e/ercicio EE salto.sh

4?/bin/bash

M#!MD6

while F 7 HS doecho A#ntroduJca un nmero: Aread !'-_!M

if F $!'-_!M lt $M#!M HS thenecho A-l nmero intrododucido es menor *ue el moAecho A A

elif F $!'-_!M gt $M#!M HS thenecho A-l nmero introducido es maor *ue el moAecho A A

elif F $!'-_!M e* $M#!M HS thenecho ACcertaste: Mi nmero era $M#!MAbrea

fidone

4 &omandos inferiores111

echo A-l script sali, del bucle1 +erminando111Aexit

La condición es !ue el bucle se e/ecute siempre (test E siempre retornar" 30)#, y el buclese seguir" e/ecutando. Pero, si el número introducido es el mismo !ue el valor deT5*N)5 , brea  har" !ue se salga de el bucle y continúe e/ecutando los comandosinferiores.

 7en en cuenta que en bas scripting( usando la notaci*n $F H  para acercálculos s*lo podemos usar n0meros enteros"

<unciones

Page 37: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 37/43

9i bien las funciones en bash scripting difieren de lo !ue son en la mayor6a de los lengua/esde programación, s6 comparten, en cambio, su ra:ón de ser b"sica.

)na 0unci(n en un script es un con/unto de l6neas (comandos a los !ue se les da un nombreespecial y pueden ser e/ecutados desde cual!uier punto del script mediante el uso de ese

nombre especial.)na función se <#@*N# de la siguiente forma7

function nombre_de_la_funcion () [

44 C*u van los comandos *ue se

44 eKecutarán cuando llamemos a la

44 funci,n

\

nombre_de_la_funcion lo elegimos nosotros, y le podemos dar el nombre !ue !ueramos,con las mismas condiciones !ue el nombre de una variable (no espacios, no caracteresextra1os, etc.. #ntre las dos llaves ([ y \ se introducen los comandos !ue se !uiere !ue see/ecuten cuando la función sea llamada.

( e/emplo EM 8unction1.sh )n e/emplo sencillo podr6a ser el siguiente7

4?/bin/bash

4 function71sh

function uso () [echo A-ste script recibe dos argumentos1Aecho A-l primero debe ser opc7 u opc0 IA

echo A el segundo debe ser un fichero existente1Aecho AA

\

if F $4 ne 0 HS thenusoexit 7

fi

case $7 inopc7)

if F e $0 HS thenecho A-l script termin, con @xitoA

Page 38: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 38/43

exit 8else

usoexit 7

fiSS

4 e verdadero si archivo existeopc0)if F e $0 HS thenecho A-l script termin, con @xitoA

exit 8else

usoexit 7

fiSS

G)usoexit 7

SSesac

#/ecutar el script7 funcionE.sh $$opcionE nomb[archivo

<e no haber usado a!u6 las funciones, tendr6amos !ue haber reescrito los echo !ue dicencómo se usa el script una y otra ve: en cada sitio donde los hubi'semos necesitado.5ientras no se e/ecute el script con los argumentos adecuados, llamamos a la función uso

!ue explica al usuario cómo se debe llamar el script.

Podemos definir tantas funciones como necesitemos, cada una con un nombre distinto.

;dem"s, al igual !ue los scripts desde la l6nea de comandos, las funciones pueden recibir  par"metros, !ue se procesan de la misma forma7 $7 $0 y dem"s se corresponden con el primer y el segundo par"metro pasado a la función respectivamente.

;l convertirse la función en un comando posible dentro del script, los par"metros se le pasan igual !ue a cual!uier otro comando7

( e/emplo E= listar.sh

4?/bin/bash

function lista_parametros () [  echo A'e ha llamado a lista_parametrosI con $4A  echo Aparámetros1 Mostrando los parámetros:A  echo A A

  bD;

  numparmsD$4

  local KD7

Page 39: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 39/43

  while F $K le $numparms HS do  echo A-l parámetro $K contiene $7A  shift  local KD$F$KZ7H  done\

lista_parametros a b c d dsfafd d

echo $b

echo $K

La función lista_parametros en este e/emplo recibe varios par"metros del mismo modo!ue cual!uier otro comando dentro del script, y se procesan igual !ue ya conocemos paralos scripts.

;!u6 hacemos uso de shift dentro de la función. Lo !ue shift hace es !ue TE valga TM, !ueTM valga T=, etc. para as6 recortar la lista de argumentos una posición !uitando el primerode ellos. %2u' conseguimos Pues es sencillo, listamos todos los par"metros posibles, puesto !ue imprimimos el primero por pantalla, luego el primero vale el segundo, !ue seimprime por pantalla, luego el primero vale el tercero, !ue se vuelve a sacar por pantalla, yas6 con tantos como tengamos. shift  nos ofrece unas avan:adas posibilidades para procesar argumentos. #n este e/emplo lo hemos visto dentro de una función, pero todo estoes tambi'n aplicable a un script en s6 mismo, fuera de una función.

Para terminar con este e/emplo, nos fi/amos en local KD111, esto significa !ue la variable

$K sólo existe dentro de la función, de hecho, cuando hacemos echo $K fuera de la función,no obtenemos ningún valor. La variable $b, al no ser <#CL;0;<; <# \5I*3?L?C;L, sino -L?I;L, existe dentro de la función y fuera de ella, como se puede apreciar e/ecutando el script. Cual!uier otra variable con valor en el flu/o principal del script existedentro de las funciones !ue definamos.

Aemos dicho !ue cada función se convierte en una especie de comando posible dentrodel script donde est" definida. Como si de un comando se tratase, y al igual !ue hac6amoscon exit 8 o exit 7 en el flu/o principal del script, podemos hacer !ue la llamada a unafunción genere un valor de retorno de 'xito o bien de error. Lo conseguimos con elcomando return. 9e usa exactamente igual !ue exit en el script, pero usaremos return

dentro de las funciones.

C?5;N<? I??0;0 ;0CA*4?9 ( #/ercicio EX borrar.sh

 borrar $opc Nom[;rchivo.$t nos borra todo sin pedir confirmación

Page 40: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 40/43

Page 41: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 41/43

  fi  else

echo Xdemaciados parámetros X  echo X presione una teclaY  read enter7 fi

fifi

n e7em"lo com"leto

;hora vamos a ver en detalle un e/emplo de un script !ue usa muchas cosas de las

aprendidas y adem"s tiene un fin pr"ctico7 sirve para transpasar los archivos de una c"maradigital a un directorio de nuestra m"!uina. ;dem"s, la función echoc llama al comandoecho con los argumentos adecuados para !ue la salida sea con colores (esperamos comentar esto en otro cap6tulo. No te preocupes si no comprendes algunos comandos de los usados, pues son muy espec6ficosD lo importante es ver !ue la correcta combinación de todo loaprendido termina en scripts útiles como este7

4?/bin/bash44 Nariables de configuraci,n4 Z Ccabado en / ????

#-&+.#._'CP#CD/home/camara/444 Tunciones4function echoc()[  case $0 in  AredA)

echo n A`FF87S27mA  SS  AgreenA)

echo n A`FF87S20mA  SS

  AblueA)echo n A`FF87S23mA

4 n no imprime una nueva lnea  SS  esac

  echo n $7  if test $2 D 7  then

Page 42: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 42/43

  echo n A`FF88mA  else  echo A`FF88mA  fi\4

4function comp()[  echoc AFA AblueA A7A  echo n A A  if test $7 D 8  then  echoc A.A AgreenA A7A  else  echoc A??A AredA A7A  fi  echo n A A  echoc AHA AblueA A8A\

4 Mainecho A"or favorI encienda la cámara p,ngala en modoFW>HA

echo n A"ulse una tecla para continuarAread n7echo A1A

echo n AMontando la cámara111 Amount /camara 0>7 > /dev/nullcomp $Q

echo A&opiando imágenes a /home/sergio/camara111 Afor i in /camara/dcim/788nion/G1Kpgdo  !-N._.MO-DVbasename $i W sed s:dscn:$#-&+.#._'CP#C:gV  echo n A $i > $!-N._.MO-111 A  cp $i $!-N._.MO-  comp $Qdone

echo n Aesmontando la cámara111 Aumount /camara 0>7 > /dev/nullcomp $Q

if F V/etc/init1d/samba status W aw [print $2\V ?DAstartedA Hthen  echo A#niciamos samba111 A  /etc/init1d/samba start 0>7 >/dev/null  comp $Qelse  echo A'amba a está iniciado1A

Page 43: Manual Linux Práctico PERSONAL

8/17/2019 Manual Linux Práctico PERSONAL

http://slidepdf.com/reader/full/manual-linux-practico-personal 43/43

fi

echo ALa puede apagar la cámara con seguridadA

0ecuerda la utilidad de los scripts a la hora de automati:ar tareas !ue tengan !ue hacersefrecuentementeD es me/or hacer un script !ue teclear todos los comandos necesarios cadave: !ue lo necesitemos.