Está en la página 1de 48

1 Curso de Linux 1. Parte.

1.1 Introduccin 3 3 4 4 " & " & , , , 10

1.2 Conceptos bsicos de UNIX 1.2.1 Creacin de una cuenta 1.2.3 Consolas !irtuales 1.2." %alida del sistema 1.2.& )rc*i!o $ +irectorios 1.2., -l rbol de +irectorios

1.2.2 Presentacin en el sistema (loggin in 1.2.4 Int#rpretes de comandos $ mandatos 1.2.' Cambiando la palabra de paso (pass(ord

1.2.. +irectorio de traba/o actual 1.3 Primeros pasos en UNIX 11

1.2.10 1e2iriendose al directorio *ome 1.3.1 3o!iendonos por el entorno 1.3.3 Creando directorios nue!os 1.3.4 Copia de 2ic*eros 1.3." 3o!iendo 2ic*eros 1.3.& 3irando los 2ic*eros 1.3., 5bteniendo a$uda en l6nea 1.4 %umario de 5rdenes 4sicas 1." -7plorando el %istema de 8ic*eros 1.' 9ipos de int#rpretes de comandos 1.& Carcteres comod6n 1., 8ontaner6a UNIX 2& 24 14 1" 11

1.3.2 3irando el contenido de los directorios 14

12

1.3.' 4orrando 2ic*eros $ directorios 1" 1' 1&

1"

1. 23

1.,.1 -ntrada $ salida estandard 1.,.2 1edireccionando la entrada $ salida 1.,.3 Uso de tuber6as (pipes 2.

2& 2,

1.,.4 1edireccin no destructi!a 1.. Permisos de 8ic*eros 31 1...1 Conceptos de permisos de 2ic*eros 1...2 Interpretando los permisos de 2ic*eros 1...3 +ependencias 1...4 Cambiando permisos 1.10 3ane/ando enlaces de 2ic*eros 1.10.1 -nlaces duros (:ard lin;s 1.10.2 -nlaces simblicos 1.11 Control de 9areas 1.11.1 9areas $ procesos 3, 3, 3& 33 34 3'

31 31 32

3'

1.11.2 Primer plano $ %egundo plano 1.11.4 Parada $ relan<amiento de tareas 1.12 Personali<ando su entorno. 44

3. 40 42 44 4'

1.11.3 -n!6o a segundo plano $ eliminacin procesos

1.12.1 -l interprete de comandos (%*ell del sistema . 1.12.2 =uiones del interprete de comandos. 4" 1.12.3 >ariables del interprete de comandos $ el entorno.

Curso de Linux 1. Parte.


1.1 Introduccin
?os nue!os usuarios de UNIX $ ?inu7 pueden estar un poco intimidados por el tama@o $ aparente comple/idad del sistema Aue tienen ante si. :a$ muc*os buenos libros sobre el uso de UNIX para todos los ni!elesB desde no!atos a e7pertos. Pero ninguno de estos libros cubre especi2icamente una introduccin al uso de ?inu7. 3ientras el ."C del uso de ?inu7 es e7actamente como cualAuier otro UNIXB la 2orma ms clara de comen<ar con su nue!o sistema es un tutorial a medida para ?inu7. He aqu ese tutorial. -ste curso esta dise@ado para aAuellos usuarios Aue inician con la administracin de ?inu7. -st pensado para permitir al nue!o usuario de ?inu7 comen<ar a usar el sistema $ situarlo en una posicin en la Aue #l o ella puedan leer libros ms generales sobre UNIX $ entender las di2erencias bsicas entre otros sistemas UNIX $ ?inu7. %e !a a presuponer mu$ pocoB e7cepto Aui< alguna 2amiliaridad con los ordenadores personales $ 3%D+5%. Pero incluso si no es un usuario de 3%D+5%B deber6a ser capa< de entender cualAuier cosa de las Aue *ablemos. ) primera !istaB UNIX parece como 3%D +5% (despu#s de todoB partes de 3%D+5% 2ueron tomadas de CPE3B el cual 2u# a su !e< inspirado en UNIX . PeroB solo las caracter6sticas super2iciales de UNIX se parecen a 3%D +5%. Incluso si es completamente nue!o en el mundo de los PCB este material deber6a serle de a$uda. FB antes de comen<arG No tenga miedo de e7perimentar. -l sistema no le morder. No puede destruir nada traba/ando con el sistema. UNIX tiene ciertos sistemas de seguridad para e!itar Aue usuarios HnormalesH (del tipo Aue suponemos Aue es usted da@en 2ic*eros esenciales para el sistema. Incluso si ocurre el peor de los casos Aue es Aue borre todos sus 2ic*erosB tendr Aue !ol!er atrs $ reinstalar el sistemaB pero incluso en ese casoB no *a$ nada Aue perder.

1.2 Conceptos bsicos de UNI


UNIX es un sistema operati!o multitarea $ multiusuario. -sto signi2ica Aue puede *aber ms de una persona usando un ordenador a la !e<B cada uno de ellos e/ecutando a su !e< di2erentes aplicaciones. (-sto di2iere de 3%D+5%B donde solo una persona puede usar el sistema en un momento dado . 4a/o UNIXB para Aue los usuarios puedan identi2icarse en el sistemaB deben presentarse (login B proceso Aue consta de dos pasosG Introducir el nombre de usuario (login (el nombre con Aue ser identi2icado por el sistema B $ una palabra de paso (pass(ord B la cual es su lla!e personal secreta para entrar en la cuenta. Como solo usted conoce su palabra de pasoB nadie ms podr presentarse en el sistema con su nombre de usuario.

-n los sistemas UNIX tradicionalesB el administrador del sistema asignar el nombre de usuario $ una palabra de paso inicial en el momento de crear la cuenta de usuario. Como usted es el administrador del sistemaB debe con2igurar su propia cuenta antes de poder presentarseB !er %eccin 1.2.1 ms adelante. Para el resto de las discusionesB usaremos el nombre de usuario Ilarr$I. )demsB cada sistema UNIX tiene un nombre del sistema (*ostname asignado. -ste I*ostnameI le da nombre a la mAuinaB adems de carcter $ encanto. -l nombre del sistema es usado para identi2icar mAuinas en una redB pero incluso aunAue la mAuina no est# en redB deber6a tener su nombre. -n nuestros e/emplosB el nombre del sistema ser el nombre Aue presente al accesar en ese momentoB por e/emplo JrootKlocal*ost rootLM.

1.2.1 Creacin de una cuenta


)ntes de poder usar el sistemaB deber con2igurarse una cuenta de usuario. -sto es necesarioB porAue no es buena idea usar la cuenta de root para los usos normales. ?a cuenta de root deber6a reser!arse para el uso de comandos pri!ilegiados $ para el mantenimiento del sistema. Para crear su propia cuentaB necesita entrar en la cuenta de root $ usar las rdenes useradd o adduser. root ! adduser no"usuario #$nter%

1.2.2 Presentacin en el siste"a &lo''in in(


-n el momento de presentarse en el sistemaB !er la siguiente l6nea de comandos en la pantallaG lo'in as) )*oraB introdu<ca su nombre de usuario $ pulse NO1eturnON. Nuestro *eroe larr$B teclear6a lo siguienteG lo'in as) larr* pass+ord) )*ora introdu<ca la palabra de paso. -sta no ser mostrada en la pantalla con2orme se !a tecleeandoB por lo Aue debe teclear cuidadosamente. %i introduce una palabra de paso incorrectaB se mostrar el siguiente mensa/e lo'in incorrect $ deber intentarlo de nue!o.

Una !e< Aue *a introducido correctamente el nombre de usuario $ la palabra de pasoB est o2icialmente IpresentadoI en el sistema $ libre para comen<ar a traba/ar.

1.2., Consolas -irtuales


?a consola del sistema es el monitor $ teclado conectado directamente al sistema. (Como UNIX es un sistema operati!o multiusuarioB puede tener otros terminales conectados a puertos serie del sistemaB pero estos no sern la consola . ?inu7B como otras !ersiones de UNIXB porporciona acceso a consolas !irtuales (o >CHs B las cuales le permitirn tener ms de una sesin de traba/o acti!a desde la consola a la !e<. Para demostrar estoB entre en su sistema (como *emos !isto antes . )*ora pulse N OaltD82ON. +eber6a !er la pregunta loginG de nue!o. -st !iendo la segundaOconsolaO!irtualO*a entrado en el sistema por la primera. Para !ol!er a la primera >CB pulse NOaltD81ON. >oilaP *a !uelto a la primera sesin. Un sistemaO?inu7OrecienOinstaladoOprobablemente le permita acceder a las primeras cuatro >CHsB usando NOaltD81ONa NOaltD84ON. Pero es posible *abilitar *asta 12 >CHsO una por cada tecla de 2uncin del teclado. Como puede !erB el uso de >CHs es mu$ potenteO puede estar traba/ando en di2erentes >CHs a la !e<. 3ientras Aue el uso de >CHs es algo limitado (despu#s de todoB solo puede mirar un >C cada !e< B esto deber6a darle una idea de las capacidades multiusuario del sistema. 3ientras est traba/ando en el >C M1B puede conmutar al >C M2 $ comen<ar a traba/ar en otra cosa.

1.2.. Int/rpretes de co"andos * "andatos


-n la ma$or6a de las e7ploraciones en el mundo de UNIXB estar *ablando con el sistema a tra!#s del uso de un int#rprete de comandos. Un int#rprete de comandos es simplemente un programa Aue toma la entrada del usuario (p.e/. las rdenes Aue teclea $ las traduce a instrucciones. -sto puede ser comparado con el C533)N+.C53 de 3%D +5%B el cual e2ectua esencialmente las misma tarea. -l int#rprete de comandos es solo uno de los inter2aces con UNIX. :a$ muc*os inter2aces posiblesO como el sistema X Qindo(sB el cual le permite e/ecutar comandos usando el ratn $ el teclado. 9an pronto como entra en el sistemaB el sistema arranca un int#rprete de comandos $ Ud. Fa puede teclear rdenes al sistema. >eamos un e/emplo rpido. )Au6B ?arr$ entra en el sistema $ es situado en el int#rprete de comandos "ouse0ouse lo'in) larr* Pass+ord) larr*1s pass+ord 2elco"e to 3ouse0ouse4 50o"e5larr*!

"

IE*omeElarr$MI es el IpromptI del int#rprete de comandosB indicando Aue est listo para recibir rdenes. 9ratemos de decirle al sistema Aue *aga algo interesanteG 50o"e5larr*! "a6e lo-e "a6e) 777 No +a* to "a6e tar'et 8lo-e1. 9top. 50o"e5larr*! 4ienB como resulta Aue ma;e es el nombre de un programa $a e7istente en el sistemaB el int#rprete de comandos lo e/ecuta. (+esa2ortunadamenteB el sistema no est siendo mu$ amigable . -sto nos lle!a a una cuestin importanteG RSue son rdenesT RSue ocurre cuando tecleamos Ima;e lo!eIT. ?a primera palabra de la ordenB Ima;eIB es el nombre de la orden a e/ecutar. -l resto de la orden es tomado como argumentos de la orden. -/emplosG 50o"e5larr*! cp :oo bar )Au6B el nombre de la orden es IcpIB $ los argumentos son I2ooI $ IbarI. Cuando teclea una ordenB el int#rprete de comandos *ace !arias cosas. Primero de todoB busca el nombre de la orden $ comprueba si es una orden interna. (-s decirB una orden Aue el propio int#rprete de comandos sabe e/ecutar por si mismo. :a$ bastantes rdenes de ese tipo Aue !eremos ms adelante . -l int#rprete de comandos tambi#n comprueba si la orden es un IaliasI o nombre sustitutorio de otra orden. %i no se cumple ninguno de estos casosB el int#rprete de comandos busca el programa $ lo e/ecuta pasndole los argumentos especi2icados en la l6nea de comandos. -n nuestro e/emploB el int#rprete de comandos busca el programa llamado ma;e $ lo e/ecuta con el argumento lo!e. ma;e es un programa usado a menudo para compilar programas grandesB $ toma como argumentos el nombre de un Iob/eti!oI a compilar. -n el caso de Ima;e lo!eIB ordenamos a ma;e Aue compile el ob/eti!o lo!e. Como ma;e no puede encontrar un ob/eti!o de ese nombreB 2alla en!iando un mensa/e de error $ !ol!iendo al int#rprete de comandos. RSu# ocurre si tecleamos una orden $ el int#rprete de comandos no puede encontrar el programa de ese nombreT. 4ienB prob#mosloG 50o"e5larr*! eat dirt eat) co""and not :ound 50o"e5larr*! 4astante simpleB si no se puede encontrar el programa con el nombre dado en la orden (aAu6 IeatI B se muestra un mensa/e de error Aue deber6a de ser autoe7plicati!o. ) menudo !er

'

este mensa/e de error si se eAui!oca al teclear una orden (por e/emploB si *u!iese tecleado Im;ae lo!eI el lugar de Ima;e lo!eI.

1.2.; 9alida del siste"a


)ntes de a*ondar msB deber6amos !er como salir del sistema. +esde la l6nea de denes usaremos la orden 50o"e5larr*! exit para salir. :a$ otras 2ormasB pero esta es la ms 2cil.

1.2.< Ca"biando la palabra de paso &Pas++ord(


9ambi#n debe asegurarse de la 2orma de cambiar su palabra de paso. ?a orden pass(d le pedir su palabra de paso !ie/a $ la nue!a. >ol!er a pedir una segunda !e< la nue!a para !alidarla. 9enga cuidado de no ol!idar su palabra de pasoO si eso ocurreB deber pedirle al administrador del sistema Aue la modi2iAue por usted.

1.2.= >rc0i-os * directorios


4a/o la ma$or6a de los sistemas operati!os (UNIX incluido B e7iste el concepto de 2ic*eroB el cual es un con/unto de in2ormacin al Aue se le *a asignado un nombre (llamado nombre del 2ic*ero . -/emplos de 2ic*ero son un mensa/e de correoB o un programa Aue puede ser e/ecutado. -sencialmenteB cualAuier cosa sal!ada en el disco es guardada en un 2ic*ero indi!idual. ?os 2ic*eros son identi2icados por sus nombres. Por e/emploB el 2ic*ero Aue contiene su *istorial podr6a ser sal!ado con el nombre *istor$Dpaper. -stos nombres usualmente identi2ican el 2ic*ero $ su contenido de alguna 2orma signi2icati!a para usted. No *a$ un 2ormato estndad para los nombres de los 2ic*eros como lo *a$ en 3%D+5% $ en otros sistemas operati!osU en general estos pueden contener cualAuier carcter (e7cepto E O !er la discusin sobre Ipat*namesI (rutas de 2ic*eros ms adelante B $ estn limitados a 2"' carcteres de longitud. Con el concepto de 2ic*ero aparece el concepto de directorio. Un directorio es simplemente una coleccin de 2ic*eros. Puede ser considerado como una IcarpetaI Aue contiene muc*os 2ic*eros di2erentes. ?os directorios tambi#n tienen nombre con el Aue los podemos identi2icar. )demsB los directorios mantienen una estructura de rbolU es decirB directorios pueden contener otros directorios. Un 2ic*ero puede ser re2erenciado por su nombre con caminoB el cual est constituido por su nombreB antecedido por el nombre del directorio Aue lo contiene. Por e/emploB supongamos Aue ?arr$ tiene un directorio de nombre papers Aue contiene tres

&

2ic*erosG *istor$D2inalB englis*Dlit $ mastersDt*esis. (Cada uno de los tres 2ic*eros contiene in2ormacin sobre tres de los pro$ectos en los Aue ?arr$ est traba/ando . Para re2erirse al 2ic*ero englis*DlitB ?arr$ puedeespeci2icar su caminoG papers5en'lis0?lit Como puede !erB el directorio $ el nombre del 2ic*ero !an separados por un carcter E. Por esta ra<nB los nombres de 2ic*ero no pueden contener este carcter. ?os usuarios de 3%D+5% encontrarn esta con!encin 2amiliarB aunAue en el mundo 3%D+5% se usa el carcter V . Como *emos mencionadoB los directorios pueden anidarse uno dentro de otro. Por e/emploB supongamos Aue ?arr$ tiene otro directorio dentro de papers llamado c*eatDs*eet. -l camino de este 2ic*ero ser6a papers5notes5c0eat?s0eet Por lo tantoB el camino realmente es la IrutaI Aue se debe tomar para locali<ar a un 2ic*ero. -l directorio sobre un subdirectorio dado es conocido como el directorio padre. )Au6B el directorio papers es el padre del directorio notes.

1.2.@ $l rbol de directorios


?a ma$or6a de los sistemas UNIX tienen una distribucin de 2ic*eros estndardB de 2orma Aue recursos $ 2ic*eros puedan ser 2cilmente locali<ados. -sta distribucin 2orma el rbol de directoriosB el cual comien<a en el directorio IEIB tambi#n conocido como Idirectorio rai<I. +irectamente por deba/o de E *a$ algunos subdirectorios importantesG EbinB EetcB Ede! $ EusrB entre otros. -stos a su !e< contienen otros directorios con 2ic*eros de con2iguracin del sistemaB programasB etc. -n particularB cada usuario tiene un directorio I*omeI. -ste es el +irectorio en el Aue el usuario guardar sus 2ic*eros. -n los e/emplos anterioresB todos los 2ic*eros de ?arr$ (como c*eatDs*eer $ *istor$D2inal estaban contenidos en el directorio *ome de ?arr$. UsualmenteB los directorios *ome de los usuarios cuelgan de E*ome $ son nombrados con el nombre del usuario al Aue pertenecen. Por lo tantoB el directorio I*omeI de ?arr$ es E*omeElarr$. -n la Figura # 1 se muestra un rbol de directorio de e/emplo. -ste deber6a darle una idea de como est organi<ado en su sistema el rbol de directorios.

1.2.A Birectorio de trabaCo actual


-n cualAuier momentoB las rdenes Aue teclee al int#rprete de comandos son dadas en t#rminos de su directorio de traba/o actual. Puede pensar en su directorio actual de traba/o como en el directorio en el Aue actualmente est IsituadoI. Cuando entra en el sistemaB su ,

directorio de traba/o se iniciali<a a su directorio *omeOE*omeElarr$ en nuestro caso. -n cualAuier momento Aue re2erencie a un 2ic*eroB puede *acerlo en relacin a su directorio de traba/o actualB en lugar de especi2icar el camino completo del 2ic*ero. >emos un e/emplo. ?arr$ tiene el directorio papersB $ papers contiene el 2ic*ero *istor$D2inal. %i ?arr$ Auiere ec*ar un !ista<o a ese 2ic*eroB puede usar la orden E*omeElarr$M more E*omeElarr$EpapersE*istor$D2inal ?a orden more simplemente muestra el 2ic*eroB pantalla a pantalla. PeroB como el directorio de traba/o actual de ?arr$ es E*omeElarr$B podr6a *aberse re2erido al 2ic*ero de 2orma relati!a a su directorio de traba/o actual. ?a orden ser6a E*omeElarr$M more papersE*istor$D2inal
EOOOOOOONNbin NOOde! N NOOetc N NOO*ome OOOOOOOlarr$ NN N NOOsam NOO N lib NOOproc N NOOtmp N N NOOusr OOOOOOONNX3,' N NOObin N NOOemacs N NOO N etc N NOOgWWDinclude N NOOinclude N NOOlib N NOO OOOOOOO N local N bin N N N N

N NOOemacs N NOOetc

N N N NOOlib N NOO N man N NOOspool N NOOsrcOOOOOOOlinu7 N NOOtmp

Figura 1: Tpico rbol de directorios Unix (resumido). Por lo tantoB si comien<a el nombre de un 2ic*ero (como papersE2inal con un carcter distinto a IEIB el sistema supone Aue se est re2iriendo al 2ic*ero con su posicin relati!a a su directorio de traba/o. -sto es conocido como camino relati!o. Por otra parteB si comien<a el nombre del 2ic*ero con IEIB el sistema interpreta esto como un camino completoOes decirB el camino al 2ic*ero completo desde el directorio rai<B E. -sto es conocido como camino absoluto.

1.2.1D Ee:iriendose al directorio 0o"e


4a/o tcs* $ bas*B1 el directorio I*omeI puede ser re2erenciado usando el carcter de la tilde (X . Por e/emploB la orden 50o"e5larr*! "ore F5papers50istor*?:inal es eAui!alente a 50o"e5larr*! "ore 50o"e5larr*5papers50istor*?:inal -l carcter IXI es simplemente sustituido por el int#rprete de comandosB con el nombre del directorio *ome. )demsB tambi#n puede especi2icar otros directorios *ome de usuarios con la tilde. -l camino IX;arlElettersI es traducido por el int#rprete de denes a IE*omeE;arlElettersI (si E*omeE;arl es el directorio *ome de ;arl . -l uso de la tilde es simplemente un ata/oU no e7iste ningYn directorio llamado IXIOes simplemente una a$uda sintctica proporcionada por el int#rprete de comandos.

10

1., Pri"eros pasos en UNI


)ntes de comen<ar es importante destacar Aue todos los nombres de 2ic*eros $ comandos son Icasesensiti!eI (Aue *acen di2erencia entre ma$Ysculas $ minYsculasB a di2erencia de sistemas operati!os como 3%D+5% . Por e/emploB el comando ma;e es di2erente a 3a;e o 3)Z-. ?o mismo ocurre en el caso de nombres de 2ic*eros o directorios.

1.,.1 3o-iendonos por el entorno


)*ora Aue $a podemos presentarnos como usuariosB $ sabemos como indicar 2ic*eros con su camino completoB [como podemos cambiar nuestro directorio de traba/oT ?a orden para mo!ernos por la estructura de directorios es cdB abre!iacin de Icambio de directorioI. :a$ Aue destacarB Aue la ma$or6a de las rdenes Uni7 ms usadas son de dos o tres letras. ?a 2orma de uso de la orden cd esG cd #directorio% donde \directorioR es el nombre del directorio al Aue Aueremos ir. Como di/imosB al entrar al sistema comen<amos en el directorio I*omeI. %i ?arr$ Auiere ir al subdirectorio papersB deber6a usar la orden tcs* $ bas* son dos int#rpretes de comandos Aue corren ba/o ?inu7. Un int#rprete de comandos es el programa Aue lee las rdenes del usuario $ las e/ecutaU la ma$or6a de los sistemas ?inu7 *abilitan tcs* o bas* para las nue!as cuentas de usuario. 50o"e5larr*! cd papers 50o"e5larr*5papers! Como se puede !erB la l6nea de comandos de ?arr$ cambia para mostrar su directorio actual de traba/o. )*ora Aue $a est en el directorio papers puede ec*arle un !ista<o a su 2ic*ero *istor$D2inal con el comando 50o"e5larr*5papers! "ore 0istor*?:inal )*ora ?arr$ est en el subdirectorio papersB para !ol!er al directorio padre de esteB usar la orden 50o"e5larr*5papers! cd .. 50o"e5larr*! 11

(+ese cuenta del espacio entre IcdI $ I..I . Cada directorio tiene una entrada de nombre I..I la cual se re2iere al directorio padre. +e igual 2ormaB e7iste en cada directorio la entrada I.I la cual se re2iere a si mismo. )s6 Aue el comando 50o"e5larr*5papers! cd . 50o"e5larr*! nos de/a donde estamos. 9ambi#n pueden usarse nombres con el camino absoluto en la orden cd. Para ir al directorio de Zarl con cdB introduciremos la siguiente orden. 50o"e5larr*5papers! cd 50o"e56arl 50o"e56arl! 9ambi#nB usando cd sin argumentos nos lle!ar a nuestro directorio de origen. 50o"e56arl! cd 50o"e5larr*!

1.,.2 3irando el contenido de los directorios


)*ora Aue $a sabe ccmo mo!erse por los directorios probablemente pensarG [F bienT. -l simple mo!imiento por el rbol de directorios es poco YtilB necesitamos un nue!o comandoB ls. ls muestra por el terminal la lista de 2ic*eros $ directoriosB por de2ectoB los del directorio acti!o. Por e/emploU 50o"e5larr*! ls 3ail letters papers 50o"e5larr*! )Au6 podemos !er Aue ?arr$ tiene tres entradas en su directorio actualG 3ailB letters $ papers. -sto no nos dice demasiadoORson 2ic*eros o directoriosT. Podemos usar la opcin D8 de la orden ls para obtener ms in2ormacin. 50o"e5larr*! ls ?G 3ail5 letters5 papers5 50o"e5larr*! Por el carcter E a@adido a cada nombre sabemos Aue las tres entradas son subdirectorios. 12

?a orden ls D8 puede tambi#n a@adir al 2inal I]IB esto indica Aue es un 2ic*ero e/ecutable. %i ls D8 no a@ade nadaB entonces es un 2ic*ero normalB es decir no es ni un directorio ni un e/ecutable. Por lo general cada orden UNIX puede tomar una serie de opciones de2inidas en 2orma de argumentos. -stos usualmente comien<an con el carcter IDIB como !imos antes con ls D8. ?a opcin D8 le dice a ls Aue de ms in2ormacin sobre el tipo de 2ic*erosOen este caso a@adiendo un E detrs de cada nombre de un directorio. %i a ls le pasamos un nombre de directorioB mostrar el contenido de ese directorio. 50o"e5larr*! ls ?G papers en'lis0?lit 0istor*?:inal "asters?t0esis notes5 50o"e5larr*! Para !er un listado ms interesanteB !eamos el contenido de directorio del sistema Eetc. 50o"e5larr*! ls 5etc Images adm bc*ec;rc brc brcX cs*.cs*rc cs*.login de2ault dis;tab 2dprm 2stab 2tpaccess 50o"e5larr*! (Para los usuarios de 3%D+5%B ntese Aue los nombres de los 2ic*eros pueden ser ma$ores de , caracteres $ pueden contener puntos en cualAuier posicin. Incluso es posible Aue un 2ic*ero contenga ms de un punto en su nombre. >a$amos al directorio rai< con Icd ..I $ desde all6 !a$amos al directorio EusrEbin. E0o"e5larr*! cd .. 13 2tpusers gett$ gett$de2s group inet init init.d initrunl!l inittab inittab.old issue lilo lpc magic motd mount mtab mtools pac pass(d printcap pro2ile psdatabase rc rc.ne( rc0.d rc1.d rc2.d rc3.d rc4.d rc".d rmt rpc rpcin2o securett$ ser!ices s*ells startcons s(apo22 s(apon s$slog.con2 s$slog.pid s$slogd.reload termcap umount update utmp (tmp

50o"e! cd .. 5! cd usr 5usr! cd bin 5usr5bin! 9ambi#n podemos mo!ernos dentro de directorios en mYltiples pasosB como en cd EusrEbin. 9rate de mo!erse por !arios directorios usando ls $ cd. -n algunos casos podr encontrarse el desagradable mensa/e de error IPermission deniedI. -sto simplemente es debido a cuestiones de seguridad del UNIX. Para poder mo!erse listar un directorio debe de tener permisos para poder *acerlo.

1.,., Creando directorios nue-os


-s el momento de aprender a crear directorios. Para ello se usa la orden m;dir. Pruebe lo siguienteG 50o"e5larr*! "6dir :oo 50o"e5larr*! ls ?G 3ail5 :oo5 letters5
papers/

50o"e5larr*! cd :oo 50o"e5larr*5:oo! ls 50o"e5larr*5:oo! ^-n*orabuenaP )caba de crear un directorio nue!o $ mo!erse a #l. Como no *a$ ningYn 2ic*ero en el directorio nue!oB !eamos como copiar 2ic*eros desde un lugar a otro.

1.,.. Copia de :ic0eros


?a copia de 2ic*eros es e2ectuada por la orden cpG 50o"e5larr*5:oo! cp 5etc5ter"cap . 50o"e5larr*5:oo! cp 5etc5s0ells . 50o"e5larr*5:oo! ls ?G s0ells ter"cap 50o"e5larr*5:oo! cp s0ells bells 50o"e5larr*5:oo! ls ?G bells s0ells ter"cap 50o"e5larr*5:oo!

14

?a orden cp copia los 2ic*eros listados en la l6nea de comandos al 2ic*ero o directorio pasado como Yltimo argumento. Ntese como se usa el directorio I.I para re2erirnos al directorio actual.

1.,.; 3o-iendo :ic0eros


?a orden "- mue!e 2ic*eros en lugar de copiarlos. ?a sinta7is es mu$ sencilla. 50o"e5larr*5:oo! "- ter"cap sells 50o"e5larr*5:oo! ls ?G bells sells s0ells 50o"e5larr*5:oo! Ntese como termcap $a no e7isteB en su lugar est el 2ic*ero sells. -sta orden puede usarse para renombrar 2ic*erosB como acabamos de *acerB pero tambi#n para mo!er 2ic*eros a directorios di2erentes. NotaG "- $ cp sobreescribirn los 2ic*eros destino (si $a e7isten sin consultar. %ea cuidadoso cuando mue!a un 2ic*ero a otro directorioG puede *aber $a un 2ic*ero con el mismo nombre Aue ser sobreescrito.

1.,.< Horrando :ic0eros * directorios


Para borrar un 2ic*eroB use la orden rm. &Ir"I -iene de Ire"o-eI . 50o"e5larr*5:oo! r" bells sells 50o"e5larr*5:oo! ls ?G s0ells 50o"e5larr*5:oo! ! r" Jr directorio borra de 2orma recursi!a Nos *emos Auedado solo con el 2ic*ero Is*ellsIB pero no nos Aue/aremos. Ntese Aue rm por de2ecto no preguntar antes de borrar un 2ic*eroOluegoB sea cuidadoso. Una orden relacionada con rm es rmdir. -sta orden borra un directorioB pero solo si est !acio. %i el directorio contiene 2ic*eros o subdirectoriosB rmdir se Aue/ar.

1.,.= 3irando los :ic0eros

1"

?as rdenes more $ cat son usadas para !er el contenido de 2ic*eros. 3ore muestra el 2ic*ero pantalla a pantalla mientras Aue cat lo muestra entero de una !e<. Para !er el contenido del 2ic*ero s*ells podemos usar la orden 50o"e5larr*5:oo! "ore s0ells Por si est interesado en el contenido de s*ellsB es una lista de int#rpretes de comandos !lidos disponibles en el sistema. -n la ma$or6a de los sistemas inclu$e EbinEs*B EbinEbas* $ EbinEcs*. +urante la e/ecucin de more pulse NO%paceONpara a!an<ar a la pgina siguiente $ N ObONpara !ol!er a la pgina anterior. :a$ otros comandos disponiblesB los citados son solo los ms bsicos. NOAON 2inali<ar la e/ecucin de more. %alga de more $ pruebe cat EetcEtermcap. -l te7to probablemente pasar demasiado rpido como para poder leerlo. -l nombre IcatI !iene de IconcatenateIB Aue es para lo Aue realmente sir!e el programa. ?a orden cat puede ser usada para concatenar el contenido de !arios 2ic*eros $ guardar el resultado en otro 2ic*ero. -sto se discutir ms adelante.

1.,.@ Kbteniendo a*uda en lnea


Prcticamente cada sistema UNIXB incluido ?inu7B proporciona una utilidad conocida como Ipginas de manualI. -stas pginas contienen documentacin en l6nea para todas las rdenes del sistemaB recursosB 2ic*eros de con2iguracinB etc. ?a orden usada para acceder a las pginas de manual es man. Por e/emploB si est interesado en conocer otras opciones de la orden lsB puede escribir 50o"e5larr*! "an ls $ le ser mostrada la pgina de manual para ls. +esa2ortunadamente la ma$or6a de las pginas de manual *an sido escritas por gente Aue $a conoc6a lo Aue la orden o recurso *ac6aB por estoB las pginas de manual usualmente solo contienen detalles t#cnicos de la orden sin ningYn tipo de tutorial de uso. Pese a estoB estas pginas son una gran 2uente de in2ormacin Aue permiten re2rescar la memoria si ol!idamos la sinta7is de un comando. IgualmenteB estas pginas le darn muc*a in2ormacin sobre rdenes Aue no trataremos en este libro. ?e sugiero Aue pruebe man con los comandos Aue $a *emos tratado $ con los Aue !a$amos introduciendo. Notar Aue alguno de los comandos no tiene pgina de manual. -sto puede ser debido a di2erentes moti!os. -n primer lugarB las pginas no *an sido escritas aYn (el Pro$ecto de +ocumentacin de ?inu7 es tambi#n el responsable de las 1'

pginas de manual . -n segundo lugarB la rden puede ser interna del int#rprete de comandosB o un aliasB en cu$o caso no tendrn una pgina propia. Un e/emplo es la orden cd la cual es interna del int#rprete de comandos. -l propio int#rprete de comandos es Auien procesa cdOno *a$ un programa separado.

1.. 9u"ario de Krdenes Hsicas


-sta seccin introduce algunos de las rdenes bsicas ms Ytiles de un sistema UNIXB incluidas las $a cubiertas en las secciones anteriores. Ntese Aue las opciones usualmente comien<an con IDI $ en la ma$or6a de los casos se pueden a@adir mYltiples opciones de una letra con un Ynico IDI. Por e/emploB en lugar de usar ls Dl D8 es posible usar ls Dl8. -n lugar de listar todas las opciones disponibles para cada uno de los comandos solo *ablaremos de aAuellas ms Ytiles o importantes. +e *ec*oB la ma$or6a de las rdenes tienen un gran nYmero de opciones (muc*as de las cuales nunca usar . Puede usar man para !er las pginas de manual de cada ordenB la cual mostrar la lista completa de opciones disponibles. Ntese tambi#nB Aue la ma$or6a de las rdenes toman una lista de 2ic*eros o directorios como argumentosB denotados como I\2ic*ero1R . .\.2ic*eroNRI. Por e/emploB la orden cp toma como argumentos la lista de 2ic*eros a copiarB seguidos del 2ic*ero o directorio destino. Cuando se copia ms de un 2ic*eroB el destino debe de ser un directorio. cd Cambia el directorio de traba/o actual. %inta7isG cd \directorioR \directorioR es el directorio al Aue cambiamos. (I.I %e re2iere al directorio actualB I..I al directorio padre. -/emploG cd ..E2oo pone ..E2oo como directorio actual. 3uestra in2ormacin sobre los 2ic*eros o directorios indicados. %inta7isG ls \2ic*ero1R \2ic*ero2R . . .\2ic*eroNR +onde \2ic*ero1R a \2ic*eroNR son los 2ic*eros o directorios a listar. 5pcionesG :a$ ms opciones de las Aue podr6a suponer. ?as ms usadas comYnmente sonG D8 (usada para mostrar in2ormacin sobre el tipo de 2ic*ero B $ Dl (da un listado IlargoI inclu$endo tama@oB propietarioB permisos..etc. 9rataremos esto en detalle ms adelante. -/emploG ls Dl8 E*omeElarr$ mostrar el contenido del directorio E*omeElarr$. cp Copia 2ic*ero(s en otro 2ic*ero o directorio. %inta7isG cp \2ic*ero1R \2ic*ero2R . . .\2ic*eroNR \destinoR +onde \2ic*ero1R a \2ic*eroNR son los 2ic*eros a copiarB $ \destinoR es el 2ic*ero o directorio destino. -/emploG cp ..E2rog /oe copia el 2ic*ero ..E2rog al 2ic*ero o directorio /oe.

ls

1&

"-

3ue!e 2ic*ero(s a otro 2ic*ero o directorio. -s eAui!alente a una copia seguida del borrado del original. Puede ser usado para renombrar 2ic*erosB como el comando 3%D+5% 1-N)3-. %inta7isG m! \2ic*ero1R \2ic*ero2R . . .\2ic*eroNR \destinoR +onde \2ic*ero1R a \2ic*eroNR son los 2ic*eros a Imo!erI $ \destinationR es el 2ic*ero o directorio destino. -/emploG m! ..E2rog /oe mue!e el 2ic*ero ..E2rog al 2ic*ero o directorio /oe. 4orra 2ic*eros. Ntese Aue cuando los 2ic*eros son borrados en UNIXB son irrecuperables (a di2erencia de 3%D+5%B donde usualmente se puede recuperar un 2ic*ero borrado . %inta7isG rm \2ic*ero1R \2ic*ero2R . . .\2ic*eroNR +onde \2ic*ero1R a \2ic*eroNR son los nombres de los 2ic*eros a borrar. 5pcionesG Di pedir con2irmacin antes de borrar un 2ic*ero. -/emploG rm Di E*omeElarr$E/oe E*omeElarr$E2rog borra los 2ic*eros /oe $ 2rog en E*omeElarr$. Crea directorios nue!os. %inta7isG m;dir \dir1R \dir2R . . .\dirNR +onde \dir1R a \dirNR son los directorios a crear. -/emploG m;dir E*omeElarr$Etest crea el directorio test colgando de E*omeElarr$. -sta orden borra directorios !acios. )l susar rmdirB el directorio de traba/o actual no debe de estar dentro del directorio a borrar. %inta7isG rmdir \dir1R \dir2R . . .\dirNR +onde \dir1R a \dirNR son los directorios a borrar. -/emploG rmdir E*omeElarr$Epapers borra el directorio E*omeElarr$Epapers si est !acio. 3uestra la pgina de manual del comando o recurso (cualAuier utilidad del sistema Aue no es un comandoB como 2unciones de librer6a dado. %inta7isG man \commandR +onde \commandR es el nombre del comando o recurso sobre el Aue Aueremos obtener la a$uda. -/emploG man ls muestra a$uda sobre la orden ls. 3uesta el contenido de los 2ic*eros indicadosB una pantalla cada !e<. %inta7isG more \2ic*ero1R \2ic*ero2R . . .\2ic*eroNR +onde \2ic*ero1R a \2ic*eroNR son los 2ic*eros a mostrar. -/emploG more papersE*istor$D2inal muestra por el terminal el contenido del 2ic*ero papersE*istor$D2inal.

r"

m;dir

rmdir

man

"ore

1,

cat

52icialmente usado para concatenar 2ic*erosB cat tambi#n es usado para mostrar el contenido completo de un 2ic*ero de una !e<. %inta7isG cat \2ic*ero1R \2ic*ero2R . . .\2ic*eroNR +onde \2ic*ero1R a \2ic*eroNR son los 2ic*eros a mostrar. -/emploG cat lettersE2romDmd( muestra por el terminal el contenido del 2ic*ero lettersE2romDmd(. %implemente en!6a al terminal los argumentos pasados. %inta7isG ec*o \arg1R \arg2R . . .\argNR +onde \arg1R a \argNR son los argumentos a mostrar. -/emploG ec*o __:ola mundoHH muestra la cadena I:ola mundoI. 3uestra todas las l6neas de un 2ic*ero dado Aue coinciden con un cierto patrn. %inta7isG grep \patrnR \2ic*ero1R \2ic*ero2R . . .\2ic*eroNR +onde \patrnR es una e7presin regular $ \2ic*ero1R a \2ic*eroNR son los 2ic*eros donde buscar. -/emploG grep loomer EetcE*osts mostrar todas las l6neas en el 2ic*ero EetcE*osts Aue contienen la cadena IloomerI.

ec0o

'rep

)nali<ar los siguientes comandosG + +0o +0o a" i +0oa"i cal +c sort ps 6ill

1.; $xplorando el 9iste"a de Gic0eros


-l sistema de 2ic*eros es la coleccin de 2ic*eros $ la /erarAu6a de directorios de su sistema. ?e prometimos acompa@arle por el sistema de 2ic*erosB $ *a llegado el momento. 9iene el ni!el $ conocimientos para entender de lo Aue estamos *ablandoB adems de una gu6a de carreteras. Primero cambie al directorio rai< (cd 5 $ e/ecute ls ?G. Probablemente !er estos directoriosG binL de-L etcL 0o"eL installL libL "ntL procL rootL t"pL userL usrL * -ar. -c*emos un !ista<o a cada uno de estos directorios.

1.

5bin

Ebin es la abre!iacin de IbinariesIB o e/ecutables. -s donde residen la ma$oria de los programas esenciales del sistema. Use la orden Ils D8 EbinI para listar los 2ic*eros. Podr !er algunas rdenes Aue reconocerB como cpB ls $ m!. -stos son los programas para estas rdenes. Cuando usa la orden cp est e/ecutando el programa EbinEcp. Usando ls D8 !er Aue la ma$or6a (si no todos los 2ic*eros de Ebin tienen un asterisco (I]I a@adido al 2inal de sus nombres. -sto indica Aue son 2ic*eros e/ecutables.

5de-

-l siguiente es Ede!. -c*#mosle un !ista<o de nue!o con ls D8. ?os I2ic*erosI en Ede! son conocidos como controladores de dispositi!o (de!ice dri!ers Oson usados para acceder a los dispositi!os del sistema $ recursosB como discos durosB modemsB memoriaB etc. Por e/emploB de la misma 2orma Aue puede leer datos de un 2ic*eroB puede leerla desde la entrada del ratn le$endo Ede!Emodem. ?os 2ic*eros Aue comien<an su nombre con 2d son controladores de disAueteras. 2d0 es la primera disAueteraB 2d1 la segunda. )*oraB alguien astuto se dar cuenta de Aue *a$ ms controladores de dispositi!o para disAueteras de los Aue *emos mencionado. -stos representan tipos espec62icos de discos. Por e/emploB 2d1:1440 acceder a discos de 3."Ide alta densidad en la disAuetera 1. )Au6 tenemos una lista de algunos de los controladores de dispositi!o ms usados. Ntese Aue incluso aunAue puede Aue no tenga alguno de los dispositi!os listadosB tendr entradas en de! de cualAuier 2orma. o Ede!Econsole *ace re2erencia a la consola del sistemaO es decirB al monitor conectado directamente a su sistema. o ?os dispositi!os Ede!Ett$% $ Ede!Ecua son usados para acceder a los puertosserie. Por e/emploB Ede!Ett$%0 *ace re2erencia a IC531I ba/o 3%D+5%. ?os dispositi!os Ede!Ecua son IcalloutIB los cuales son usados en con/uncin conun modem. o ?os nombres de dispositi!o Aue comien<an por *d acceden a discos duros. Puede !er otros o incluso no !er todos. No se preocupe. Cada !ersin de ?inu7 di2iere en algunos aspectos. Ede!E*da *ace re2erencia a la totalidad del primer disco duroB mientras Aue Ede!E*da1 *ace re2erencia a la primera particin en Ede!E*da. o ?os nombres de dispositi!o Aue comien<an con sd son dispositi!os %C%I. %i tiene un disco duro %C%IB en lugar de acceder a #l mediante Ede!E*daB deber acceder a Ede!Esda. ?as cintas %C%I son accedidas !6a dispositi!os st $ los C+D153 %C%I !6a sr. 20

o ?os nombres Aue comien<an por lp acceden a los puertos paralelo. Ede!Elp0 *ace re2erencia a I?P91I en el mundo 3%+5%. o Ede!Enull es usado como Iagu/ero negroIO cualAuier dato en!iado a este dispositi!o desaparece. RPara Au# puede ser Ytil estoT. 4ienB si desea suprimir la salida por pantalla de una ordenB podr6a en!iar la salida a Ede!Enull. :ablaremos ms sobre esto despu#s. o ?os nombres Aue comien<an por Ede!Ett$ *acen re2erenciaOaOIconsolasO!irtualesI de su sistema (accesibles mediante las teclas NOaltD81ONB NOaltD82ONB etc . Ede!Ett$1 *ace re2erencia a la primera >CB Ede!Ett$2 a la segundaB etc. o ?os nombres de dispositi!o Aue comien<an con Ede!Ept$ son IpseudoterminalesI. -stos son usados para proporcionar un IterminalI a sesiones remotas. Por e/emploB si su mAuina est en una redB telnet de entrada usar uno de los dispositi!os Ede!Ept$. 5etc Eetc contiene una serie de 2ic*eros de con2iguracin del sistema. -stos inclu$en EetcEpass(d (la base de datos de usuarios B EetcErc (guiones de iniciali<acin del sistema B etc. Esbin se usa para almacenar programas esenciales del sistemaB Aue usar el administrador del sistema. E*ome contiene los directorios I*omeI de los usuarios. Por e/emploB E*omeElarr$ es el directorio del usuario Ilarr$I. -n un sistema recien instaladoB no *abr ningYn usuario en este directorio. Elib contiene las imgenes de las librer6as compartidas. -stos 2ic*eros contienen cdigo Aue compartirn muc*os programas. -n lugar de Aue cada programa contenga una copia propia de las rutinas compartidasB estas son guardadas en un lugar comYnB en Elib. -sto *ace Aue los programas e/ecutables sean menores $ reduce el espacio usado en disco. Eproc es un Isistema de 2ic*eros !irtualI. ?os 2ic*eros Aue contiene realmente residen en memoriaB no en un disco. :acen re2erencia a !arios procesos Aue corren en elsistemaB $ le permiten obtener in2ormacin acerca de Aue programas $ procesos estncorriendo en un momento dado. 3uc*os programas tienen la necesidad de generar cierta in2ormacin temporal $guardarla en un 2ic*ero temporal. -l lugar *abitual para esos 2ic*eros es en Etmp. 21

5sbin 50o"e

5lib

5proc

5t"p

5usr

Eusr es un directorio mu$ importante. Contienen una serie de subdirectorios Aue contienen a su !e< algunos de los ms importantes $ Ytiles programas $ 2ic*eros de con2iguracin usados en el sistema. ?os directorios descritos arriba son esenciales para Aue el sistema est# operati!oB pero la ma$or6a de las cosas Aue se encuentran en Eusr son opcionales para el sistema. +e cualAuier 2ormaB son estas cosas opcionales las Aue *acen Aue el sistema sea Ytil e interesante. %in EusrB tendr6a un sistema aburridoB solo con programas como cp $ ls. Usr contiene la ma$or6a de los paAuetes grandes de programas $ sus 2ic*eros de con2iguracin. EusrEX3,' contiene el sistema X Qindo( si usted lo instala. -l sistema X Qindo( es un entorno gr2ico grande $ potente el cual proporciona un gran nYmero de utilidades $ programas gr2icosB mostrados en I!entanasI en su pantalla. %i est 2amiliari<ado con los entornos 3icroso2t Qindo(s o 3acintos*B X Qindo( le ser mu$ 2amiliar. -l directorio EusrEX3,' contiene todos los e/ecutables de X Qindo(B 2ic*eros de con2iguracin $ de soporte. EusrEbin es el almac#n real de programas del sistema UNIX. Contiene la ma$or6a de los programas Aue no se encuentran en otras partes como Ebin. Como Eetc contiene di2erentes 2ic*eros de con2iguracin $ programas del sistemaB EusrEetc contiene incluso ms Aue el anterior. -n generalB los 2ic*eros Aue se encuentran en EusrEetcE no son esenciales para el sistemaB a di2erencia de los Aue se encuentran en EetcB Aue si lo son. EusrEinclude contiene los 2ic*eros de cabacera para el compilador de C. -stos 2ic*eros (la ma$or6a de los cuales terminan en .*B de I*eaderI declaran estructuras de datosB sunrutinas $ constantes usados en la escritura de programas en C. ?os 2ic*eros Aue se encuentran en EusrEincludeEs$s son generalmente usados en la programacin de en UNIX a ni!el de sistema. %i est 2amiliari<ado con el lengua/e de programacin CB aAu6 encontrar los 2ic*eros de cabecera como stdio.*B el cual declara 2unciones como print2( . EusrEgWWDinclude contiene 2ic*eros de cabecera para el compilador de CWW (mu$ parecido a EusrEinclude .

5usr5 ,@<

5usr5bin 5usr5etc

5usr5include

5usr5'MM?include

5usr5lib

EusrElib contiene las librer6as eAui!alentes IstubI $ IstaticI a los 2ic*eros encontrados en Elib. )l compilar un programaB este es Ienla<adoI con las librer6as Aue se encuentran en EusrElibB las cuales dirigen al programa a buscar en Elib cuando necesita el cdigo de la

22

librer6a. )demsB !arios con2iguracin en EusrElib. 5usr5local

programas

guardan

2ic*eros

de

EusrElocal es mu$ parecido a EusrOcontiene programas $ 2ic*eros no esencialespara el sistemaB pero Aue *acen el sistema ms di!ertido $ e7citante. -n generalB los programas Aue seencuentran en EusrElocal son espec62icos de su sistemaOesto esB el directorio EusrElocal di2iere bastante entre sistemas UNIX. )Au6 encontrar programas grandes como 9-X (sistema de 2ormateo de documentos $ -macs (gran $ potente editor B si los instala.

5usr5"an

-ste directorio contiene las pginas de manual. :a$ dos subdirectorios para cada pgina IseccinI de las pginas (use la orden man man para ms detalles . Por e/emploB EusrEmanEman1 contiene los 2uentes (es decirB los originales por 2ormatear delas pginas de manual de la seccin 1B $ EusrEmanEcat1 las pginas $a 2ormateadasde la seccin 1. EusrEsrc contiene el cdigo 2uente (programas por compilar de !arios programas de su sistema. -l ms importante es EusrEsrcElinu7B el cual contiene el cdigo 2uente del NYcleo de ?inu7. E!ar contiene directorios Aue a menudo cambian su tama@o o tienden a crecer. 3uc*os de estos directorios solian residir en EusrB pero desde Aue estamos tratando de de/arlo relati!amente inalterableB los directorios Aue cambian a menudo *an sido lle!ados a E!ar. )lgunos de estos directorios sonG E!arEadm contiene !arios 2ic*eros de inter#s para el administrador del sistemaB especi2icamente *istricos del sistemaB los cuales recogen errores o problemas con el sistema. 5tros 2ic*eros guardan las sesiones de presentacin en el sistemaB as6 comolos intentos 2allidos. E!arEspool contiene 2ic*eros !an a ser pasados a otro programa. Por e/emploB si su mAuina est conectada a una redB el correo de llegada ser almacenado en E!arEspoolEmail *asta Aue lo lea o lo borre. )rt6culos nue!os de las @e(sI tantosalientes como entrantes pueden encontrarse en E!arEspoolEne(sB etc.

5usr5src

5-ar

5-ar5ad"

5-ar5spool

1.< Nipos de int/rpretes de co"andos


UNIX es un sistema operati!o multitarea $ multiusuario. ?a multitarea es mu$ YtilB $ una !e< la *a$a probadoB la usar continuamente.

23

-n poco tiempo podr e/ecutar programas Ide 2ondoIB conmutar entre mYltiples tareas $ IentubarI programas unos entre otros para conseguir resultados comple/os con un Ynico comando. -l int#rprete de comandos proporciona la 2uncionalidad sobre el UNIX. -l int#rprete de comandos no es solo un int#rprete interacti!o de los comandos Aue tecleamosB es tambi#n un potente lengua/e de programacinB el cual permite escribir guionesB Aue permiten /untar !arias rdenes en un 2ic*ero. ?os usuarios de 3%D+5% reconoceran esto como los 2ic*eros Ibatc*I. -l uso de los guiones del int#rprete de comandos es una *erramienta mu$ potente Aue le permitir automati<ar e incrementar el uso de UNIX. :a$ !arios tipos de int#rpretes de comandos en el mundo UNIX. ?os dos ms importantes son el I4ourne s*ellI $ el IC s*ellI. -l int#rprete de comandos 4ourneB usa una sinta7is de comandos como la usada en los primeros sistemas UNIXB como el %$stem III. -l nombre del int#rprete 4ourne en la ma$or6a de los UNIX es EbinEs* (donde s* !iene de Is*ellIB int#rprete de comandos en ingl#s . 4a/o ?inu7 *a$ algunas di2erencias en los int#rpretes de comandos disponibles. +os de los ms usados son el I4ourne )gain %*ellI o I4as*I (EbinEbas* $ 9cs* (EbinEtcs* . 4as* es un eAui!alente al 4ourne con muc*as caracter6sticas a!an<adas de la C s*ell. Como 4as* es un supercon/unto de la sinta7is del 4ourneB cualAuier guin escrito para el int#rprete de comandos 4ourne standard 2uncionar en 4as*. Para los Aue pre2ieren el uso del int#rprete de comandos CB ?inu7 tiene el 9cs*B Aue es una !ersin e7tendida del C original.

1.= Carcteres co"odn


Una caracter6stica importante de la ma$or6a de los int#rpretes de comandos en Uni7 es la capacidad para re2erirse a ms de un 2ic*ero usando caracteres especiales. -stos llamados comodines le permiten re2erirse aB por e/emploB todos los 2ic*eros Aue contienen el carcter @I. -l comod6n I]I *ace re2erencia cualAuier carcter o cadena de carcteres en el 2ic*ero. Por e/emploB cuando usa el carcter I]I en el nombre de un 2ic*eroB el int#rprete de comandos lo sustitu$e por todas las combinaciones posibles pro!enientes de los 2ic*eros en el directorio al cual nos estamos re2iriendo. >eamos un e/emplo rpido. %upongamos Aue ?arr$ tiene los 2ic*eros 2rogB /oe $ stu22 en el directorio actual. 50o"e5larr*! ls :ro' Coe stu:: 50o"e5larr*! Para aceder a todos los 2ic*eros con la letra IoI en su nombreB *emos de usar la rden

24

50o"e5larr*! ls 7o7 :ro' Coe 50o"e5larr*! Como puede !erB el comod6n I]I *a sido sustituido con todas las combinaciones posibles Aue coincidian de entre los 2ic*eros del directorio actual. -l uso de I]I soloB simplemente se re2iere a todos los 2ic*erosB puesto Aue todos los caracteres coinciden con el comod6n. 50o"e5larr*! ls 7 :ro' Coe stu:: 50o"e5larr*! >eamos unos pocos e/emplos ms. 50o"e5larr*! ls :7 :ro' 50o"e5larr*! ls 7:: stu:: 50o"e5larr*! ls 7:7 :ro' stu:: 50o"e5larr*! ls s7: stu:: 50o"e5larr*! -l proceso de la sustitucin de I]I en nombres de 2ic*eros es llamado e7pansin de comodines $ es e2ectuado por el int#rprete de comandos. -sto es importanteG las rdenes indi!idualesB como lsB nunca !en el I]I en su lista de parmetros. -s el int#rprete Auien e7pande los comodines para incluir todos los nombres de 2ic*eros Aue se adaptan. ?uego la orden 50o"e5larr*! ls 7o7 es expandida para obtener 50o"e5larr*! ls :ro' Coe Una nota importante acerca del carcter comod6n I]I. -l uso de este comod6n N5 cuadrar con nombres de 2ic*eros Aue comiencen con un punto (I.I . -stos 2ic*eros son tratados como IocultosI aunAue no estn realmente ocultosB simplemente no son mostrados en un listado normal de ls $ no son a2ectados por el uso del comod6n I]I. :e aAu6 un e/emplo. Fa *emos mencionado Aue cada directorio tiene dos entradas especialesG

2"

I.I Aue *ace re2erencia al directorio actual $ I..I Aue se re2iere al directorio padre. +e cualAuier 2ormaB cuando use ls esas dos entradas no se mostrarn. 50o"e5larr*! ls :ro' Coe stu:: 50o"e5larr*! %i usa el parmetro Da con ls podr !er nombres de 2ic*eros Aue comien<an por I.I. 5bser!eG 50o"e5larr*! ls ?a . .. .bas0Opro:ile .bas0rc :ro' Coe stu:: 50o"e5larr*! )*ora podemos !er las dos entradas especialesB I.I $ I..IB as6 como otros dos 2ic*eros IocultosI .bas*Opro2ile $ .bas*rc. -stos dos 2ic*eros son usados en el arranAue por bas* cuando larr$ se presenta al sistema. Note Aue cuando usamos el comod6n I]IB no se muestra ninguno de los nombres de 2ic*ero Aue comien<an por I.I. 50o"e5larr*! ls 7 :ro' Coe stu:: 50o"e5larr*! -sto es una caracter6stica de seguridadG si I]I coincidiera con 2ic*eros Aue comien<an por I.I actuar6a sobre I.I $ I..I. -sto puede ser peligroso con ciertas rdenes. 5tro carcter comod6n es ITI. -ste carcter comod6n solo e7pande un Ynico carcter. ?uego Ils TI mostrar todos los nombres de 2ic*eros con un carcter de longitudB $ Ils termcaTI mostrar ItermcapI pero no Itermcap.bac;upI. )Au6 tenemos otro e/emploG 50o"e5larr*! ls CPe Coe 50o"e5larr*! ls :PP' :ro' 50o"e5larr*! ls PPPP: stu:: 50o"e5larr*!

! ls Jl pPPPbPP

Como puede !erB los carcteres comod6n le permiten re2erirse a ms de un 2ic*ero a la !e<. -n el resumen de rdenes en la %eccin 1.3.4 di/imos Aue cp $ m! pueden copiar o mo!er mYltiples 2ic*eros de una !e<. Por e/emploB

2'

50o"e5larr*! cp 5etc5s7 50o"e5larr* copiar todos los 2ic*eros de Eetc Aue comiencen por IsI al directorio E*omeElarr$. Por lo tantoB el 2ormato de la orden cp es realmente cp #:ic0ero1% #:ic0ero2% #:ic0ero,% . .#.:ic0eroN% #destino% donde \2ic*ero1R a \2ic*eroNR es la lista de los 2ic*eros a copiarB $ \destinoR es el 2ic*ero o directorio destino donde copiarlos. m! tiene id#ntica sinta7is. Notese Aue si est copiando o mo!iendo ms de un 2ic*eroB \destinoR debe ser un directorio. %olo puede copiar o mo!er un Ynico 2ic*ero a otro 2ic*ero.

1.@ Gontanera UNI 1.@.1 $ntrada * salida estndar


3uc*os comandos UNIX toman su entrada de algo conocido como entrada estandard $ en!ian su salida a la salida estandard (a menudo abre!iado como IstdinI $ IstdoutI . -l int#rprete de comandos con2igura el sistema de 2orma Aue la entrada estandard es el teclado $ la salida la pantalla. >eamos un e/emplo con el comando cat. Normalmente cat lee datos de los 2ic*eros cu$os nombres se pasan como argumentos en la l6nea de comandos $ en!6a estos datos directamente a la salida estandard. ?uegoB usando el comando 50o"e5larr*5papers! cat 0istor*?:inal "asters?t0esis mostrar por pantalla el contenido del 2ic*ero *istor$D2inal seguido por mastersDt*esis. %i no se le pasan nombres de 2ic*eros a cat como parmetrosB leer datos de stdin $ los en!iar a stdout. >eamos un e/emplo. 50o"e5larr*5papers! cat Hello t0ere. Hello t0ere. H*e. H*e.OOOOO QOctrl?BOQ 50o"e5larr*5papers! Como se puede !erB cada l6nea Aue el usuario teclea (impresa en itlica es inmediatamente reen!iada al monitor por cat. Cuando se est le$endo de la entrada estandardB los comandos reconocen el 2in de la entrada de datos cuandoOrecibenOel carcter -59 (endDo2Dte7tB 2in de te7to . Normalmente es generado con la combinacin NOctrlD+ON.

2&

>eamos otro e/emplo. -l comando sort toma como entrada l6neas de te7to (de nue!o leer desde stdin si no se le proporcionan nombres de 2ic*eros en la l6nea de comandos B $ de!uel!e la salida ordenada a stdout. Pruebe lo siguienteG 50o"e5larr*5papers! sort bananas carrots apples Q Octrl?BOQ apples bananas carrots 50o"e5larr*5papers! Podemos ordenar al2ab#ticamente la lista de la compra... Rno es Ytil UNIXT

1.@.2 Eedireccionando la entrada * salida


)*oraB supongamos Aue Aueremos Aue la salida de sort !a$a a un 2ic*ero para poder sal!ar la lista ordenada de salida. -l int#rprete de comandos nos permite redireccionar la salida estndard a un 2ic*ero usando el s6mbolo IRI. >eamos como 2unciona. 50o"e5larr*5papers! sort % s0oppin'?list bananas carrots applesOOO QOctrl?BOQ 50o"e5larr*5papers! Como puede !erB el resultado de sort no se muestra por pantallaB en su lugar es sal!ado en el 2ic*ero s*oppingDlist. -c*emos un !ista<o al 2ic*ero. 50o"e5larr*5papers! cat s0oppin'?list apples bananas carrots 50o"e5larr*5papers! Fa podemos ordenar la lista de la compra $ adems guardarla.

2,

%upongamos a*ora Aue ten6amos guardada nuestra lista de compra desordenada original en el 2ic*ero items. Una 2orma de ordenar la in2ormacin $ sal!arla en un 2ic*ero podr6a ser darle a sort el nombre del 2ic*ero a leer en lugar de la entrada estandard $ redireccionar la salida estandard como *icimos arriba. 50o"e5larr*5papers! sort ite"s % s0oppin'?list 50o"e5larr*5papers! cat s0oppin'?list apples bananas carrots 50o"e5larr*5papers! :a$ otra 2orma de *acer esto. No solo puede ser redireccionada la salida estandardB tambi#n puede ser redireccionada la entrada estandard usando el s6mbolo I\I. 50o"e5larr*5papers! sort # ite"s >pples Hananas Carrots 50o"e5larr*5papers! ! sort # no"bres "anRanas platanos peras

9#cnicamenteB sort \ items es eAui!alente a sort itemsB pero nos permite demostrar Aue sort \ items se comporta como si los datos del 2ic*ero 2ueran tecleados por la entrada estandard. -l int#rprete de comandos es Auien mane/a las redirecciones. sort no recibe el nombre del 2ic*ero (items a leerB desde el punto de !ista de sortB est le$endo datos de la entrada estandard como si 2ueran tecleados desde el tecldo. -sto introduce el concepto de 2iltro. Un 2iltro es un programa Aue lee datos de la entrada estandardB los procesa de alguna 2ormaB $ de!uel!e los datos procesados por la salida estandard. Usando la redireccin la entrada estandard $Eo salida estandard pueden ser re2erenciadas desde 2ic*eros. sort es un 2iltro simpleG ordena los datos de entrada $ en!6a el resultado a la salida estandard. cat es incluso ms simpleB no *ace nada con los datos de entradaB simplemente en!6a a la salida cualAuier cosa Aue le llega.

1.@., Uso de tuberas &pipes(


Fa *emos !isto como usar sort como un 2iltro. Pero estos e/emplos suponen Aue tenemos los datos en un 2ic*ero en alguna parte o !amos a introducir los datos manualmente por la entrada estandard. RSu# pasa si los datos Aue Aueremos ordenar pro!ienen de la salida de otro comandoB como lsT. Por e/emploB usando la opcin Dr con sort ordenaremos los datos en orden in!erso. %i Aueremos listar los 2ic*eros en el directorio actual en orden in!ersoB una 2orma podr6a ser. 50o"e5larr*5papers! ls en'lis0?list

2.

0istor*?:inal "asters?t0esis notes 50o"e5larr*5papers! ls % :ile?list 50o"e5larr*5papers! sort ?r :ile?list notes "asters?t0esis 0istor*?:inal en'lis0?list 50o"e5larr*5papers! )Au6B sal!amos la salida de ls en un 2ic*eroB $ entonces e/ecutamos sort `r sobre ese 2ic*ero. Pero esta 2orma necesita crear un 2ic*ero temporal en el Aue sal!ar los datos generados por ls. ?a solucin es usar las pipes3. -l uso de pipes es otra caracter6stica del int#rprete de comandosB Aue nos permite conectar una cadena de comandos en un IpipeIB donde la stdout del primero es en!iada directamente a la stdin del segundo $ as6 sucesi!amente. Sueremos conectar la salida de ls con la entrada de sort. Para crear un pipe se usa el s6mbolo INIG 50o"e5larr*5papers! ls Q sort Jr notes "asters?t0esis 0istor*?:inal en'lis0?list 50o"e5larr*5papers! -sta 2orma es ms corta $ ob!iamente ms 2cil de escribir. 5tro e/emplo YtilO usando el comando 50o"e5larr*5papers! ls 5usr5bin mostrar una lista larga de los 2ic*erosB la ma$or6a de los cuales pasar rpidamente ante nuestros o/os sin Aue podamos leerla. -n lugar de estoB usemos more para mostrar la lista de 2ic*eros en EusrEbin. 50o"e5larr*5papers! ls 5usr5bin Q "ore )*ora podemos ir a!an<ando pgina a pgina comodamente. ^Pero la di!ersin no termina aAu6P. Podemos IentubarI ms de dos comandos a la !e<. -l comando *ead es un 2iltro Aue muestra la primeras l6neas del canal de entrada (aAu6 la entrada desde una pipe . %i Aueremos !er el Yltimo 2ic*ero del directorio actual en orden al2ab#ticoB usaremosG

30

50o"e5larr*5papers! ls Q sort ?r Q 0ead ?1 notes 50o"e5larr*5papers! +onde *ead D1 simplemente muestra la primera l6nea de la entrada Aue recibe en este casoB el 2lu/o de datos ordenados in!ersamente pro!enientes de ls .

1.@.. Eedireccin no destructi-a


-l uso de IRI para redireccionar la salida a un 2ic*ero es destructi!oG en otras palabrasB el comando 50o"e5larr*5papers! ls % :ile?list sobreescribe el contenido del 2ic*ero 2ileDlist. %i en su lugarB usamos el s6mbolo IRRIB la salida ser a@adida al 2inal del 2ic*ero nombradoB en lugar de ser sobreescrito. 50o"e5larr*5papers! ls %% :ile?list aSadir la salida de ls al 2inal de 2ileDlist. -s con!eniente tener en cuenta Aue la redireccin $ el uso de pipes so caracter6sticas proporcionadas por el int#rprete de comandosO esteB proporciona estos ser!icios mediante el uso de la sinta7is IRIB IRRI $ INI.

1.A Per"isos de Gic0eros 1.A.1 Conceptos de per"isos de :ic0eros


)l ser UNIX un sistema multiusuarioB para proteger 2ic*eros de usuarios particulares de la manipulacin por parte de otrosB UNIX proporciona un mecanismo conocido como permisos de 2ic*eros. -ste mecanismo permite Aue 2ic*eros $ directorios Ipertene<canI a un usuario en particular. Por e/emploB como ?arr$ cre 2ic*eros en su directorio I*omeIB ?arr$ es el propietario de esos 2ic*eros $ tiene acceso a ellos. UNIX tambi#n permite Aue los 2ic*eros sean compartidos entre usuarios $ grupos de usuarios. %i ?arr$ lo deseaB podr6a restringir el acceso a sus 2ic*eros de 2orma Aue ningYn otro usuario tenga acceso. +e cualAuier modoB en la ma$or6a de los sistemas por de2ecto se permite Aue otros usuarios puedan leer tus 2ic*eros pero no modi2icarlos o borrarlos. Como *emos e7plicado arribaB cada 2ic*ero pertenece a un usuario en particular. Por otra parteB los 2ic*eros tambi#n pertenecen a un grupo en particularB Aue es un con/unto de usuarios de2inido por el sistema. Cada usuario pertenece al menos a un grupo cuando es 31

creado. -l administrador del sistema puede *acer Aue un usuario tenga acceso a ms de un grupo. ?os grupos usualmente son de2inidos por el tipo de ususarios Aue acceden a la mAuina. Por e/emploB en un sistema UNIX de una uni!ersidadB los usuarios pueden ser di!ididos en los grupos estudiantesB direccinB pro2esores e in!itados. :a$ tambi#n unos pocos grupos de2inidos por el sistema (como bin $ admin los cuales son usados por el propio sistema para controlar el acceso a los recursos mu$ raramente los usuarios nomales pertenecen a estos grupos. ?os permisos estn di!ididos en tres tiposG lecturaB escritura $ e/ecucin. -stos permisos pueden ser 2i/ados para tres clases de usuariosG el propietario del 2ic*eroB el grupo al Aue pertenece el 2ic*ero $ para todos los usuarios independientemente del grupo. -l permiso de lectura permite a un usuario leer el contenido del 2ic*ero o en el caso de un directorioB listar el contenido del mismo (usando ls . -l permiso de escritura permite a un usuario escribir $ modi2icar el 2ic*ero. Para directoriosB el permiso de escritura permite crear nue!os 2ic*eros o borrar 2ic*eros $a e7istentes en dic*o directorio. Por YltimoB el permiso de e/ecucin permite a un usuario e/ecutar el 2ic*ero si es un programa o guin del int#rprete de comandos. Para directoriosB el permiso de e/ecucin permite al usuario cambiar al directorio en cuestin con cd.

1.A.2 Interpretando los per"isos de :ic0eros


>eamos un e/emplo del uso de premisos de 2ic*eros. Usando el comando ls con la opcinn Dl se mostrar un listado IlargoI de los 2ic*erosB el cual inclu$e los permisos de 2ic*eros. 50o"e5larr*5:oo! ls ?l stu:: ?r+?r??r?? 1 larr* users ;D; 3ar 1, 1A)D; stu:: 50o"e5larr*5:oo! -l primer campo impreso en el listado representa los permisos de 2ic*eros. -l tercer campo es el propietario del 2ic*ero (larr$ B $ el cuarto es el grupo al cual pertenece el 2ic*ero (users . 5b!iamenteB el Yltimo campo es el nombre del 2ic*ero (stu22 B $ los dems campos los trataremos ms adelante. -ste 2ic*ero pertenece a larr$ $ al grupo users. -c*emos un !ista<o a los permisos. ?a cadena Dr(DrDDrDD nos in2ormaB por ordenB de los permisos para el propietarioB el grupo del 2ic*ero $ cualAuier otro usuario. -l primer carcter de la cadena de permisos (IDI representa el tipo de 2ic*ero. -l IDI signi2ica Aue es un 2ic*ero regular. ?as siguientes tres letras (Ir(DI representan los permisos para el propietario del 2ic*eroB larr$. -l IrI para IlecturaI $ I(I para escritura. ?uego ?arr$ tiene permisos de lectura $ escritura para el 2ic*ero stu22.

32

Como $a mencionamosB aparte de los permisos de lectura $ escritura est el permiso de Ie/ecucinIB representado por una I7I. Como *a$ un IDI en lugar del I7IB signi2ica Aue ?arr$ no tiene permiso para e/ecutar ese 2ic*ero. -sto es correctoB puesto Aue stu22 no es un programa de ningYn tipo. Por supuestoB como el 2ic*ero es de ?arr$B puede darse a si mismo permiso de e/ecucin si lo desea. -sto ser cubierto en bre!e. ?os siguientes tres carcteresB rDD representan los permisos para los miembros del grupo. -l grupo al Aue pertenece el 2ic*ero es users. Como solo aparece un IrI cualAuier usuario Aue pertene<ca al grupo users puede leer este 2ic*ero. ?as Yltimos tres carcteresB tambi#n rDDB representan los permisos para cualAuier otro usuario del sistema (di2erentes del propietario o de los pertenecientes al grupo users . +e nue!oB como solo est presente el IrIB los dems usuarios pueden leer el 2ic*eroB pero no escribir en #l o e/ecutarlo. )Au6 tenemos otros e/emplos de permisos de grupo. ?r+xr?xr?x -l propietario del 2ic*ero puede leerB escribir $ e/ecutar el 2ic*ero. ?os usuarios pertenecientes al grupo del 2ic*eroB $ todos los dems usuarios pueden leer $ e/ecutar el 2ic*ero. -l propietario del 2ic*ero puede leer $ escribir. Nadie mas puede acceder al 2ic*ero. 9odos los usuarios pueden leerB escribir $ e/ecutar el 2ic*ero.

?r+??????? ?r+xr+xr+x

1.A., Bependencias
-s importante darse cuenta de Aue los permisos de un 2ic*ero tambi#n dependen de los permisos del directorio en el Aue residen. Por e/emploB aunAue un 2ic*ero tenga los permisos Dr(7r(7r(7B otros usuarios no podrn acceder a #l a menos Aue tambi#n tengan permiso de lectura $ e/ecucin para el directorio en el cual se encuentra el 2ic*ero. %i ?arr$ Auiere restringir el acceso a todos sus 2ic*erosB podr6a simplemente poner los permisos de su directorio I*omeI E*omeElarr$ a D r(7DDDDDD. +e esta 2orma ningYn usuario podr acceder a su directorio ni a ninguno de sus 2ic*eros o subdirectorios. ?arr$ no necesita preocuparse de los permisos indi!iduales de cada uno de sus 2ic*eros. -n otras palabrasB para acceder a un 2ic*eroB debes de tener permiso de e/ecucin de todos los directorios a lo largo del camino de acceso al 2ic*eroB adems de permiso de lectura (o e/ecucin del 2ic*ero en particular. :abitualmenteB los usuarios de un sistema UNIX son mu$ abiertos con sus 2ic*eros. ?os permisos Aue se dan a los 2ic*eros usualmente son Dr(DrDDrDDB lo Aue permite a todos los dems usuarios leer los 2ic*erosB pero no modi2icarlos de ninguna 2orma. ?os directoriosB

33

usualmente tienen los permisos Dr(7rD7rD7B lo Aue permite Aue los dems usuarios puedan mo!erse $ !er los directoriosB pero sin poder crear o borrar nue!os 2ic*eros en ellos. 3uc*os usuarios pueden Auerer limitar el acceso de otros usuarios a sus 2ic*eros. Poniendo los permisos de un 2ic*ero a Dr(DDDDDDD no se permitir a ningYn otro usuario acceder al 2ic*ero. IgualmenteB poniendo los permisos del directorio a Dr(7DDDDDD no se permitir a los dems usuarios acceder al directorio en cuestin.

1.A.. Ca"biando per"isos


Para especi2icar Auien debe tener acceso a los 2ic*eros $ Aue permisos tieneB es necesario designar leer(r B escribir(( $ e/ectar (7 para cada uno de los tres grupos de usuariosG propietarioB grupo $ otros. -stos permisos tienen Aue ponerse en el mismo orden Aue aparecen cuando se utili<a el comando lsDl llU es decirG r+x r+x r+x Q Q Q Q Q QOOOOOper"iso para oros usuarios Q QOOOOOOOOOOOOOOOOOper"iso para el 'rupo de usuarios QOOOOOOOOOOOOOOOOOOOOOOOOOOOOOper"isos para el usuario propietario

-l comando c*mod se usa para establecer los permisos de un 2ic*ero. %olo el propietario puede cambiar los permisos del 2ic*ero. ?a sinta7is de c*mod esG c0"od TaLuL'LoUTML?UTrL+LxU #:ilena"es% 3KBK 9I3HKLICK Cuando se utili<a el modo simblico se pueden a@adir o Auitar permisos a los 2ic*eros $ directorios. -l 2ormato del comando c0"od simblico esG c0"od J(*oL cdigoDoperador permisos fichero +0o 9ipo de usuario. Puede tener los siguientes !aloresG u G propietario del 2ic*ero ' G grupo del Aue el propietario es miembro o G usuarios clasi2icados como otros

34

a G todos los usuarios del sistema (propietarioB grupo $ otros Indica la operacin Aue se !a a reali<arG cdi'o?operador M G a@adir permisos ? G Auitar permisos 9ipo de permisoG r G permiso de lectura per"isos + G permiso de escritura x G permiso de e/ecucin :ic0ero Nombre de 2ic*ero o directorio.

Por e/emploB supongamos Aue el 2ic*ero mar$ tiene los siguientes permisosG r(7 rO O rO O $ supongamos Aue Aueremos dar al grupo de usuarios $ al resto de los usuarios del sistemaB el permiso de e/ecucinU entonces pondr6amosG # chmod go+x datos

3KBK >H9KLUNK -l modo absoluto se especi2ica con 3 d6gitos num#ricosU cada nYmero representa los permisos de cada tipo de usuario. -stos d6gitos se obtienenB para cada clase de usuarioB a partir de los !alores siguientesG

. G permiso de lectura 2 G permiso de escritura 1 G permiso de e/ecucin.

)s6 tendremosG

D G ningYn permiso 1 G permiso de e/ecucin 2 G permiso de escritura , G permiso de e/ecucin $ escritura (1W2 . G permiso de lectura ; G permiso de lectura $ e/ecucin (4W1 < G permiso de lectura $ escritura (4W2 = G permiso de lecturaB escritura $ e/ecucin (4W2W1

3"

?a sinta7is para el comando c*mod absoluto esG c0"od modo fichero "odo %on 3 d6gitos num#ricos. Cada uno de ellos corresponde a los permisos de cada tipo de usuario.

:ic0ero Nombre de 2ic*ero o directorio. Por e/emploG ! c0"od &&& datos concede permisos de lecturaB escritura $ e/ecucin sobre el 2ic*ero datosB a todos los usuarios.

1.1D 3aneCando enlaces de :ic0eros


?os enlaces le permiten dar a un Ynico 2ic*ero mYltiples nombres. ?os 2ic*eros son identi2icados por el sistema por su nYmero de inodoB el cual es el Ynico identi2icador del 2ic*ero para el sistema de 2ic*eros. Un directorio es una lista de nYmeros de inodo con sus correspondientes nombres de 2ic*ero. Cada nombre de 2ic*ero en un directorio es un enlace a un inodo particular. 1.1D.1 $nlaces duros &Hard lin6s( ?a orden ln es usada para crear mYltiples enlaces para un 2ic*ero. Por e/emploB supongamos Aue tiene un 2ic*ero 2oo en un directorio. Usando ls DiB !eremos el nYmero de inodo para el 2ic*ero. ! ls ?i :oo 221A2 :oo ! )AuiB el 2ic*ero 2oo tiene el nYmero de inodo 221.2 en el sistema de 2ic*eros. Podemos crear otro enlace a 2ooB llamado barG ! ln :oo bar Con ls Di !eremos Aue los dos 2ic*eros tienen el mismo inodo. ! ls ?i :oo bar 221A2 bar 221A2 :oo ! NotaG ls `i Precede la salida para el 2ic*ero por el nYmero de inodo del 2ic*ero.

3'

)*oraB accediendo a 2oo o a bar accederemos al mismo 2ic*ero. %i *ace cambios en 2ooB estos cambios tambi#n sern e2ectuados en bar. Para todos los e2ectosB 2oo $ bar son el mismo 2ic*ero. -stos enlaces son conocidos como enlaces duros (*ard lin;s porAue directamente crean el enlace al inodo. Notese Aue solo podemos crear enlaces duros entre 2ic*eros del mismo sistema de 2ic*erosU enlaces simblicos (!er ms adelante no tienen esta restriccin. Cuando borra un 2ic*ero con rmB est solamente borrando un enlace a un 2ic*ero. %i usa el comando solo el enlace de nombre 2oo es borradoU bar toda!6a e7istir. Un 2ic*ero es solo de2initi!amente borrado del sistema cuando no Auedan enlaces a #l. UsualmenteB los 2ic*eros tienen un Ynico enlaceB por lo Aue el uso de rm los borra. Pero si el 2ic*ero tiene mYltiples enlacesB el uso de rm solo borrar un Ynico enlaceU para borrar el 2ic*eroB deber borrar todos los enlaces del 2ic*ero. ! r" :oo ?a orden ls Di mostrar los nYmeros de inodo. ?a orden ls Dl muestra el nYmero de enlaces a un 2ic*ero (entre otra in2ormacin . ! ls ?l :oo bar ?r+?r??r?? 2 root ?r+?r??r?? 2 root ! root root 12 >u' 12 >u' ; ; 1<);1 bar 1<);D :oo

?a segunda columna en el listadoB I 2IB especi2ica el nYmero de enlaces al 2ic*ero. )l directorio Aue pertenece. )s6 resulta Aue un directorio no es ms Aue un 2ic*ero Aue contiene in2ormacin sobre la translacin enlace a inodo. 9ambi#nB cada directorio tiene al menos dos enlaces duros en #lG I.I (un enlace apuntando a si mismo $ I..I (un enlace apuntando al directorio padre . -n el directorio rai< (E B el enlace I..I simplemente apunta a E.

1.1D.2 $nlaces si"blicos


?os enlaces simblicos son otro tipo de enlaceB Aue es di2erente al enlace duro. Un enlace simblico permite dar a un 2ic*ero el nombre de otroB pero no enla<a el 2ic*ero con un inodo. ?a orden ln Ds crea un enlace simblico a un 2ic*ero. Por e/emploB si usamos la orden

3&

! ln ?s :oo bar crearemos un enlace simblico bar apuntando al 2ic*ero 2oo. %i usamos ls DiB !eremos Aue los dos 2ic*eros tienen inodos di2erentesB en e2ecto. ! ls ?i :oo bar 221A; bar 221A2 :oo ! +e cualAuier modoB usando ls Dl !emos Aue el 2ic*ero bar es un enlace simblico apuntando a 2oo. ! ls ?l :oo bar lr+xr+xr+x 1 root ?r+?r??r?? 1 root ! root root , >u' 12 >u' ; 1<);1 bar ?% :oo ; 1<);D :oo

?os bits de permisos en un enlace simblico no se usan (siempre aparecen como r(7r(7r(7 . -n su lugarB los permisos del enlace simblico son determinados por los permisos del 2ic*ero IapuntadoI por el enlace (en nuestro e/emploB el 2ic*ero 2oo . 8uncionalmenteB los enlaces duros $ simblicos son similaresB pero *a$ algunas di2erencias. Por una parteB puede crear un enlace simblico a un 2ic*ero Aue no e7isteU lo mismo no es cierto para enlaces duros. ?os enlaces simblicos son procesados por el nYcleo de 2orma di2erente a los durosB lo cual es solo una di2erencia t#cnicaB pero a !eces importante. ?os enlaces simblicos son de a$uda puesto Aue identi2ican al 2ic*ero al Aue apuntanU con enlaces duros no *a$ 2orma 2cil de saber Aue 2ic*ero est enla<ado al mismo inodo. ?os enlaces se usan en muc*as partes del sistema ?inu7. ?os enlaces simblicos son especialmente importantes para las imgenes de las librer6as compartidas en Elib.

1.11 Control de Nareas 1.11.1 Nareas * procesos


Control de 9areas es una utilidad incluida en muc*os s*ells (incluidas 4as* $ 9cs* B Aue permite el control de multitud de comandos o tareas al momento. )ntes de seguirB deberemos *ablar un poco sobre los procesos. Cada !e< Aue usted e/ecuta un programaB usted lan<a lo Aue se conoce como procesoB Aue es simplemente el nombre Aue se le da a un programa cuando se esta e/ecutando. -l comando ps !isuali<a la lista de procesos Aue se estn e/ecutando actualmenteB por e/emploG

3,

50o"e5larr*! ps PIB 2. 1<1 NN , , 9N>N 9 E NI3$ CK33>NB D)D, &bas0( D)DD ps

50o"e5larr*! ?a columna PI+ representa el identi2icador de proceso. ?a Yltima columna C533)N+B es el nombre del proceso Aue se est e/ecutando. )*ora solo estamos !iendo los procesos Aue est e/ecutando ?arr$". >emos Aue *a$ dos procesosB bas* (Sue es el s*ell o int#rprete de comandos Aue usa ?arr$ B $ el propio comando ps. Como puede obser!arB la bas* se e/ecuta concurrentemente con el comando ps. ?a bas* e/ecut ps cuando ?arr$ tecle el comando. Cuando ps termina de e/ecutarse (despu#s de mostrar la tabla de procesos B el control retorna al proceso bas*B Aue muestra el promptB indicando Aue est listo para recibir otro comando. Un proceso Aue esta corriendo se denomina tarea para el s*ell. ?os t#rminos proceso $ tareaB son intercambiables. %in embargoB se suele denominar ItareaI a un procesoB cuando es usado en con/uncin con control de tareasB Aue es un rasgo del s*ell Aue permite cambiar entre distintas tareas. :a$ muc*os ms procesos aparte de estos corriendo en el sistemaB para !erlos todosB teclearemos el comando !ps aux -n muc*os casosB los usuarios solo e/ecutan un traba/o cada !e<B Aue es el Yltimo comando Aue ellos teclearon desde el s*ell. %in embargoB usando el control de tareasB usted podr e/ecutar di2erentes tareas al mismo tiempoB cambiando entre cada uno de ellos con2orme lo necesite. [Cun bene2icioso puede llegar a ser estoT. %upongamos Aue est usted con su procesador de te7tosB $ de repente necesita parar $ reali<ar otra tareaB con el control de tareasB usted podr suspender temporalmente el editorB $ !ol!er al s*ell para reali<ar cualAuier otra tareaB $ luego regresar al editor como si no lo *ubiese de/ado nunca. ?o siguiente solo es un e/emploB *a$ montones de usos prcticos del control de tareas.

1.11.2 Pri"er plano * 9e'undo plano


Un proceso puede estar en Primer plano o en %egundo plano. %olo puede *aber un proceso en primer plano al mismo tiempoB el proceso Aue est en primer planoB es el Aue interactYa con usted recibe entradas de tecladoB $ en!6a las salidas al monitor. (%al!oB por supuestoB Aue *a$a redirigido la entrada o la salida. -l proceso en segundo planoB no recibe

3.

ninguna se@al desde el teclado por lo generalB se e/ecutan en silencio sin necesidad de interaccin. )lgunos programas necesitan muc*o tiempo para terminarB $ no *acen nada interesante mientras tanto. Compilar programas es una de estas tareasB as6 como comprimir un 2ic*ero grande. No tiene sentido Aue se siente $ se aburra mientras estos procesos terminan. -n estos casos es me/or lan<arlos en segundo planoB para de/ar el ordenador en condiciones de e/ecutar otro programa. ?os procesos pueden ser suspendidos. Un proceso suspendido es aAuel Aue no se est e/ecutando actualmenteB sino Aue est temporalmente parado. +espu#s de suspender una tareaB puede indicar a la misma Aue continYeB en primer plano o en segundoB segYn necesite. 1etomar una tarea suspendida no cambia en nada el estado de la mismaOla tarea continuar e/ecutandose /usto donde se de/. 9enga en cuenta Aue suspender un traba/o no es lo mismoOAueOinterrumpirlo.O Cuando usted interrumpe un proceso (generalmente con la pulsacin de NOctrlDCON' B el proceso muereB $ de/a de estar en memoria $ utili<ar recursos del ordenador. Una !e< eliminadoB el proceso no puede continuar e/ecutandoseB $ deber ser lan<ado otra !e< para !ol!er a reali<ar sus tareas. 9ambi#nOseOpuede dar el caso de Aue algunos programas capturan la interrupcinB de modo Aue pulsando NOctrlDCONno se para inmediatamente. -sto se *ace para permitir al programa reali<ar operaciones necesarias de limpie<a antes de terminar&. +e *ec*oB algunos programas simplemente no se de/an matar por ninguna interrupcin.

1.11., $n-o a se'undo plano * eli"inacin procesos


-mpecemos con un e/emplo sencillo. -l comando $es es un comando aparentemente inYtil Aue en!6a una serie interminable de $Des a la salida estndard. (1ealmente es mu$ Ytil. %i se utili<a una tuber6a (o IpipeI para unir la salida de $es con otro comando Aue *aga preguntas del tipo siEnoB la serie de $Des con2irmar todas las preguntas. ?aOteclaOde interrupcin puede de2inirse usando el comando stt$. Por de2ectoB en la ma$or6a de sistemas es NOctrlDCONB pero no se puede garanti<ar Aue sea la misma en su sistema. 9iempo necesario para guardar algunos registrosB etc. Pruebe con esto. 50o"e5larr*! *es * * * * *

40

?a serie de $Des continuarO*astaOel in2initoB a no ser Aue usted la elimineB pulsando la tecla de interrupcinB generalmente NOctrlDCON. 9ambi#n puede des*acerse de esta serie de $Des redigiriendo la salida estndard de $es *acia Ede!EnullB Aue como recordar es una especie de Iagu/ero negroI o papelera para los datos. 9odo lo Aue usted en!6e all6B desaparecer. 50o"e5larr*! *es % 5de-5null )*ora !a muc*o me/orB el terminal no se ensuciaB pero el prompt de la s*ell no retorna. -sto es porAue $es sigue e/ecutandose $ en!iando esos inYtiles $Des a 5de-5null. Para recuperarloB pulse la tecla de interrupcin. %upongamos a*ora Aue Aueremos de/ar Aue el comando $es siga e/ecutandoseB $!ol!er al mismo tiempo a la s*ell para traba/ar en otras cosas. Para ello nos en!iaremos a $es a segundo planoB lo Aue nos permitir e/ecutarloB pero sin necesidad de interaccin. Una 2orma de mandar procesos a segundo plano es a@adiendo un carcter IaI al 2inal de cada comando. 50o"e5larr*! *es % 5de-5null V W1X 1<. 50o"e5larr*! Como podr !erB *a regresado a la s*ell. RPero Aue es eso de IJ1L 1'4ITB Rse est e/ecutando realmente el comando $esT IJ1LI representa el nYmero de tarea del proceso $es. ?a s*ell asigna un nYmero a cada tarea Aue se est# e/ecutando. Como $es es el Ynico comando Aue se est e/ecutandoB se le asigna el nYmero de tarea 1. -l nYmero I1'4I es el nYmero de identi2icacin del procesoB o PI+B Aue es el nYmero Aue el sistema le asigna al proceso. )mbos nYmeros pueden usarse para re2erirse a la tarea como !eremos despu#s. )*ora usted tiene el proceso $es corriendo en segundo planoB $ en!iando constantemente la se@al $ *acia el dispositi!o Ede!Enull.Para c*eAuear el estado del procesoB utilice el comando interno de la s*ell /obsG 50o"e5larr*! Cobs W1XM Eunnin' 50o"e5larr*! *es %5de-5null V psB como mostramos antesB para

^)*6 estP. 9ambi#n puede usar el comando comprobar el estado de la tarea.

41

Para eliminar una tareaB utilice el comando ;ill. -ste comando toma como argumento un nYmero de tarea o un nYmero de I+ de un proceso. -sta era la tarea 1B as6 Aue usando el comando E0o"e5larr*! 6ill Y1 $li"ina la tarea

matar la tarea. Cuando se identi2ica la tarea con el nYmero de tareaB se debe preceder el nYmero con el carcter de porcenta/e (_CI . )*ora Aue $a *emos matado la tareaB podemos usar el comando /obs de nue!o para comprobarloG 50o"e5larr*! Cobs W1XM Ner"inated 50o"e5larr*! ?a tarea estB en e2ectoB muertaB $ si usa el comando /obs de nue!oB no mostrar nada. 9ambi#n podr matar la tarea usando el nYmero de I+ de proceso (PI+ B el cual se muestra con/untamente con el I+ de tarea cuando arranca la misma. -n nuestro e/emplo el I+ de proceso es 1'4B as6 Aue el comando E0o"e5larr*! 6ill 1<. es eAui!alente a 50o"e5larr*! 6ill Y1 No es necesario usar el ICI cuando nos re2erimos a una tarea a tra!#s de su I+ de proceso. *es %5de-5null

1.11.. Parada * relanRa"iento de tareas


:a$ otra manera de poner una tarea en segundo plano. Usted puede lan<arlo como un proceso normal (en primer plano B pararloB $ despu#s relan<arlo en segundo plano. PrimeroB lance el proceso $es en primer plano como lo *ar6a normalmenteG 50o"e5larr*! *es % 5de-5null

42

+e nue!oB dado Aue $es corre en primer planoB no debe retornar el prompt de la s*ell. )*oraB en !e< de interrumpir la tarea con NOctrlDCONB suspenderemos la tarea. -l suspender una tarea no la mataG solamente la detiene temporalmente *astaOAueOUd. la retoma. Para *acer esto usted debe pulsar la tecla de suspenderB Aue suele ser NOctrlDbON. 50o"e5larr*!O*es % 5de-5null QOctrl?ZOQ W1XM 9topped 50o"e5larr*! *es %5de-5null

3ientras el proceso est suspendidoB simplemente no se esta e/ecutando. No gasta tiempo de CPU en la tarea. %in embargoB usted puede retomar el proceso de nue!o como si nada *ubiera pasado. Continuar e/ecutandose donde se de/. ara relan!ar la tarea en primer plano B use el comando :' (del ingl#s I:ore'roundI . E0o"e5larr*! :' *es %5de-5null NotaG :' lanza la tarea en primer plano b' lanza la tarea a segundo plano

?a s*ell muestra el nombre del comando de nue!oB de 2orma AueOtengaOconocimientoOde Aue tarea es la Aue *a puesto en primer plano. Pare la tarea de nue!oB con NOctrlDbON. -sta !e< utilice el comando b' para poner la tarea en segundo plano. -sto *ar Aue el comando siga e/ecutandose igual Aue si lo *ubiese *ec*o desde el principio con IaI como en la seccin anterior. 50o"e5larr*! b' W1XM *es %5de-5null V 50o"e5larr*! F tenemos de nue!o el prompt. -l comando /obs deber6a decirnos Aue $es se est e/ecutandoB $ podemos matar la tarea con ;ill tal $ como lo *icimos antes. RCmo podemos parar la tarea de nue!oT %i pulsa NOctrlDbONno 2uncionarB $a Aue el proceso est en segundo plano. ?a respuesta es poner el proceso en primer plano de nue!oB con el comando 2gB $ entonces pararlo. Como puede obser!ar podr usar 2g tanto con tareas detenidasB como con las Aue est#n segundo plano. :a$ una gran di2erencia entre una tarea Aue se encuentra en segundo planoB $ una Aue se encuentra detenida. Una tarea detenida es una tarea Aue no se est e/ecutandoB es decirB Aue no usa tiempo de CPUB $ Aue no est *aciendo ningYn traba/o (la tarea aun ocupa un lugar en memoriaB aunAue puede ser !olcada a disco . Una tarea en segundo planoB se est e/ecutandoB $ usando memoriaB a la !e< Aue completando alguna accin mientras usted *ace otro traba/o. %in embargoB una terea en segundo plano puede intentar mostrar te7to en 43

su terminalB lo Aue puede resultar molesto si est intentando *acer otra cosa. Por e/emploB si usted us el comando 50o"e5larr*! *es V sin redirigir stdout a Ede!EnullB una cadenaOdeO$DesOse mostrarn en su monitorB sin modo alguno de interrumpirlo (no puede *acer uso de NOctrlDCONpara interrumpir tareas en segundo plano . Para poder parar esas interminablesO$esBO tendr6a Aue usar el comando "g para pasar la tarea a primer planoB $ entonces usar NOctrlDCONpara matarla. 5tra obser!acin. NormalmenteB los comandos I2gI $ IbgI actuan sobre el Yltimo proceso parado (indicado por un IWI /unto al nYmero de tarea cuando usa el comando /obs . %i usted tiene !arios procesos corriendo a la !e<B podr mandar a primer o segundo plano una tarea especi2ica indicando el I+ de tarea como argumento de 2g o bgB como en 50o"e5larr*! :' Y2 (para la tarea de primer plano nYmero 2 B o 50o"e5larr*! b' Y, (para la tarea de segundo plano nYmero 3 . No se pueden usar los I+ de proceso con 2g o bg. )dems de estoBsi usa el nYmero de tarea por si soloB como 50o"e5larr*! Y2 es eAui!alente a 50o"e5larr*! :' Y2 %olo recordarle Aue el uso de control de tareas es una utilidad de la s*ell. ?os comandos 2gB bg $ /obs son internos de la s*ell. %i por algYn moti!o usted utili<a una s*ell Aue no soporta control de tareasB no espere disponer de estos comandos. F ademsB *a$ algunos aspectos del control de tareas Aue di2ieren entre 4as* $ 9cs*. +e *ec*oB algunas s*ells no proporcionan ningYn control de tareasOsin embargoB la ma$or6a de las s*ells disponibles para ?inu7 soportan control de tareas.

1.12 PersonaliRando su entorno 1.12.1 $l interprete de co"andos &s0ell del siste"a(


44

-l int#rprete de comandos proporciona muc*os mecanismos para personali<ar su entorno de traba/o. Como *emos mencionado antesB el int#rprete de comandos es ms Aue un mero int#rprete es tambi#n un poderoso lengua/e de programacin. )unAue escribir guiones del int#rprete de comandos es una tarea e7tensaB nos gustar6a introducirle algunas 2ormas en las Aue puede simpli2icar su traba/o en un sistema UNIX mediante el uso de caracter6sticas a!an<adas del int#rprete. Como mencionamos antesB di2erentes int#rpretes usan di2erentes sinta7is para a e/ecucin de guiones. Por e/emploB 9cs* usa una notacin al estilo CB mientras Aue 4ourne usa otro tipo de sinta7is. -n esta seccin no nos 2i/aremos n las di2erencias entre los dos $ supondremos Aue los guiones son escritos con a sinta7is del int#rprete de comandos 4ourne.

1.12.2 [uiones del int/rprete de co"andos


%upongamos Aue usa una serie de comandos a menudoB $ le gustar6a acortar el tiempo reAuerido para teclear agrupndolos en una Ynica IordenI. Por e/emploB las rdenes 50o"e5larr*! cat capitulo1 capitulo2 capitulo, % libro 50o"e5larr*! +c ?l libro 50o"e5larr*! "ore libro concatenarn los arc*i!os capitulo1B capitulo2 $ capitulo3 $ guardar el resultado en el arc*i!o libro. -ntoncesB se mostrar el recuento del nYmero de l6neas del arc*i!o libro $ 2inalmente se muestra su contenido con el comando more. -n lugar de teclear todos esos comandosB podr6a agruparlos en un guin del int#rprete de comandos. -l guin usado para e/ecutar todas las rdenes ser6aG !45bin5s0 ! Un 90ell script para crear * -er el contenido del arc0i-o libro cat capitulo1 capitulo2 capitulo, % libro +c Jl libro "ore libro %i el guin se guarda en le arc*i!o *acerlibroB podr6a simplemente usar la orden .50acerlibro

4"

para e/ecutar todas las rdenes del guin. ?os guiones son simples arc*i!os de te7toU se pueden crear con un editor de te7tos como !i pico o crearlo usando cat $ direccionando su salida a un arc*i!o. ?a primera l6nea concatena los arc*i!os capitulo1 capitulo2 $ capitulo3 en el arc*i!o libroB en la segunda l6nea el comando (c cuenta las l6neas del arc*i!oB $ en la tercera l6nea el comando more !isuali<a el contenido del arc*i!o libro. ?os permisos son importantes para los guiones. %i crea un guinB debe asegurarse de Aue tiene permisos de e/ecucin para poder e/ecutarlo. ?a orden ! c0"od aMx 0acerlibro Puede ser usada para dar permisos de e/ecucin al guin *acerlibro.

1.12., \ariables del int/rprete de co"andos * el entorno.


-l int#rprete de comandos le permite de2inir !ariables como la ma$or6a de los lengua/es de programacin. Una !ariable es simplemente un tro<o de datos al Aue se le da un nombre. Notese Aue 9cs*B as6 como otros int#rpretes del estilo CB usan un mecanismo di2erente para iniciali<ar !ariables del descrito aAu6. -sta discusin supondr el uso del int#rprete 4ourneB como es 4as* (el cual probablemente est usando . Cuando asigna un !alor a una !ariable (usando el operador IcI B puede acceder a la !ariable a@adiendo a su nombre IdIB como se !e a continuacin. ! saludo]^0ola a todos^ ) la !ariable saludo se le da el !alor e*ola a todosf. Podemos a*ora *acer re2erencia a ese !alor a tra!#s del nombre de la !ariable con el pre2i/o edf. ?a orden !ec0o _saludo 0ola a todos ! Produce el mismo resultado Aue

4'

!ec0o `0ola a todos^ 0ola a todos ! -stas !ariables son internas al int#rprete. -sto signi2ica Aue solo #ste podr acceder a las !ariables. -sto puede ser Ytil en los guionesU se necesita mantenerB por e/emploB el nombre de un arc*i!oB puede almacenarlo en una !ariable. Usando la orden set mostrar una lista de todas las !ariables de2inidas en el int#rprete de comandos. +e cualAuier modoB el int#rprete de comandos permite e7portar !ariables al entorno. -l entorno es el con/unto de !ariables a las cuales tienen acceso todas las rdenes Aue e/ecute. Una !e< Aue se de2ine una !ariable en el interpreteB e7portarla *ace Aue se con!ierta tambi#n en parte del entorno. ?a orden export es usada para e7portar !ariables al entorno. -l entorno es mu$ importante en un sistema UNIX. ?e permite con2igurar ciertas rdenes simplemente iniciali<ando !ariables con las rdenes $a conocidas. >eamos un e/emplo rpido. ?a !ariable de entorno P>[$E es usada por la orden man. -speci2ica la orden Aue se usar para mostrar las pginas del manual una a una. %i iniciali<a P>[$E con el nombre del programaB se usar este para mostrar las pginas de manual en lugar de more (el cual es usado por de2ecto . Inicialice P>[$E a IcatI. -sto *ar Aue la salida de man sea mostrada de unaB sin pausas entre pginas. !P>[$E]^cat^ )*ora e7portamos P)=-1 al entorno. ! export P>[$E Pruebe la orden "an ls. ?a pgina deber !olar por su pantalla sin detenerse entre pginas. )*oraB si iniciali<a P>[$E a `"ore^L se usar la orden more para mostrar las pginas de manual. ! P>[$E]^"ore^

4&

Ntese Aue no *emos de usar la orden export despu#s del cambio de la !ariable P>[$E. %olo *emos de e7portar las !ariables una !e<U cualAuier cambio e2ectuado con posterioridad ser automticamente propagado al entorno.

4,