5.-el shell y los comandos gnu_p2.pdf

33
Redirecciones 1. Fundamentos Las redirecciones son una de las más importantes posibilidades proporcionadas por el shell. Por redirección se entiende la posibilidad de redireccionar la visualización de la pantalla hacia un fichero, una impresora o cualquier otro periférico, los mensajes de errores hacia otro fichero, de sustituir la introducción vía teclado por el contenido de un fichero. Cualquier flujo de datos en entrada o salida de comando pasa por un canal. Como sucede con el agua, es posible desviar el curso de los datos hacia otro destino o desde otra fuente. Linux utiliza canales de entradas/salidas para leer y escribir sus datos. Por defecto, el canal de entrada es el teclado, y el canal de salida, la pantalla. Los errores, direccionados por defecto a la pantalla, son tratados como un canal especial. Es posible redireccionar estos canales hacia ficheros o flujo de texto de manera transparente para los comandos Linux. 2. En salida Se puede utilizar el carácter > para redireccionar la salida estándar (la que va normalmente en la pantalla). Luego se indica el nombre del fichero donde se colocarán los resultados de salida. $ ls -l > resultado.txt $ cat resultado.txt total 1 -rw-r--r-- 1 Administ ssh_user 0 Jul 4 12:04 PEPITO -rw-r--r-- 1 Administ ssh_user 0 Jul 25 15:13 resultado.txt -rw-r--r-- 1 Administ ssh_user 171 Jul 25 15:13 test.txt Si no existe, se creará el fichero. Si existe, se sobreescribirá su contenido, incluso si el comando tecleado no es correcto. El shell empieza primero por crear el fichero y luego ejecuta el comando. Es un aspecto importante de las redirecciones: se interpretan las redirecciones de derecha a izquierda, y se instalan las redirecciones ANTES de la ejecución de los comandos. Hay que crear el fichero antes de poder escribir en él. De ahí que, incluso si el comando es falso, se crea o se «chafa» el fichero... Para añadir datos a continuación del fichero, o sea, sin sobreescribirlos, se utiliza la doble redirección >>. Se añade el resultado del comando al final del fichero. $ ls -l > resultado.txt $ date >> resultado.txt $ cat resultado.txt total 1 -rw-r--r-- 1 Administ ssh_user 0 Jul 4 12:04 PEPITO -rw-r--r-- 1 Administ ssh_user 0 Jul 25 15:13 resultado.txt -rw-r--r-- 1 Administ ssh_user 171 Jul 25 15:13 test.txt Thu Jul 25 15:20:12 2002 3. En entrada Los comandos que esperan datos o parámetros desde el teclado pueden también recibirlos desde un fichero usando el carácter <. Un ejemplo con el comando wc (word count), que permite contar el número de líneas, de palabras y de caracteres de un fichero: $ wc < resultado.txt 4 29 203 4. Documento en línea - 1 - © ENI Editions - All rights reserved - Noe Fernando Solis May Página 1

Upload: maryoung1

Post on 24-Sep-2015

248 views

Category:

Documents


10 download

TRANSCRIPT

  • Redirecciones

    1.Fundamentos

    Las redirecciones son una de las ms importantes posibilidades proporcionadas por el shell. Por redireccin seentiendelaposibilidadderedireccionarlavisualizacindelapantallahaciaunfichero,unaimpresoraocualquierotroperifrico,losmensajesdeerroreshaciaotrofichero,desustituirlaintroduccinvatecladoporelcontenidodeunfichero.

    Cualquierflujodedatosenentradaosalidadecomandopasaporuncanal.Comosucedeconelagua,esposibledesviarelcursodelosdatoshaciaotrodestinoodesdeotrafuente.

    Linuxutilizacanalesdeentradas/salidasparaleeryescribirsusdatos.Pordefecto,elcanaldeentradaeselteclado,yel canaldesalida, lapantalla.Loserrores,direccionadospordefectoa lapantalla, son tratadoscomouncanalespecial.

    Esposible redireccionar estos canaleshacia ficheroso flujode textodemanera transparentepara los comandosLinux.

    2.Ensalida

    Sepuedeutilizarelcarcter>pararedireccionarlasalidaestndar(laquevanormalmenteenlapantalla).Luegoseindicaelnombredelficherodondesecolocarnlosresultadosdesalida.

    $ ls -l > resultado.txt $ cat resultado.txt total 1 -rw-r--r-- 1 Administ ssh_user 0 Jul 4 12:04 PEPITO -rw-r--r-- 1 Administ ssh_user 0 Jul 25 15:13 resultado.txt -rw-r--r-- 1 Administ ssh_user 171 Jul 25 15:13 test.txt

    Si no existe, se crear el fichero. Si existe, se sobreescribir su contenido, incluso si el comando tecleado no escorrecto.Elshellempiezaprimeroporcrearelficheroyluegoejecutaelcomando.

    Esunaspectoimportantedelasredirecciones:seinterpretanlasredireccionesdederechaaizquierda,yseinstalanlasredireccionesANTESdelaejecucindeloscomandos.Hayquecrearelficheroantesdepoder

    escribirenl.Deahque,inclusosielcomandoesfalso,secreaosechafaelfichero...

    Paraaadirdatosacontinuacindelfichero,osea,sinsobreescribirlos,seutilizaladobleredireccin>>.Seaadeelresultadodelcomandoalfinaldelfichero.

    $ ls -l > resultado.txt $ date >> resultado.txt $ cat resultado.txt total 1 -rw-r--r-- 1 Administ ssh_user 0 Jul 4 12:04 PEPITO -rw-r--r-- 1 Administ ssh_user 0 Jul 25 15:13 resultado.txt -rw-r--r-- 1 Administ ssh_user 171 Jul 25 15:13 test.txt Thu Jul 25 15:20:12 2002

    3.Enentrada

    Loscomandosqueesperandatosoparmetrosdesdeeltecladopuedentambinrecibirlosdesdeunficherousandoelcarcter

  • La redireccinerror.log $ cat error.log rmdir: `directorio2: No such file or directory

    Puederedireccionarlosdoscanalesdesalidaaunnicoficheroponindolosenrelacin.Paraello,seutilizael>&.Tambinesimportantesaberenqusentidoelshellinterpretalasredirecciones.Elshellbuscaprimeroloscaracteres,>>alfinaldelalnea,yaquelasredireccionessuelenestaralfinaldecomando.Porlotanto,siustedquiereagruparlosdoscanalesdesalidaydeerrorenunmismofichero,hayqueprocedercomoacontinuacin.

    $ ls -l > resultado.txt 2>&1

    Seredireccionalasalida2hacialasalida1porlotanto,losmensajesdeerrorpasarnporlasalidaestndar.Luegose redirecciona el resultado de la salida estndar del comando ls hacia el fichero resultado.txt. Este ficherocontendr,porlotanto,alavezlasalidaestndarylasalidadeerror.

    Puedeutilizarlosdostiposderedireccinalavez:

    $ wc < resultado.txt > cuenta.txt $ cat cuenta.txt 4 29 203

    6.Aperturadecanales

    Existentrescanalesestndaresysenumerande0a2.As,0.Elcomandoexecpermiteabrirotrossietecanalesnumeradosde3a9.Porlotanto,haydiezcanalesentotal.

    Ustedpuedee,incluso,debeconsiderar,enelmarcodelosprocesos,sacaralgunosresultadosporelcanal3,otrosporel4,yassucesivamente.Loscanalesestnabiertosparalaentradaylasalida.

    $ exec 3>dump.log $ ls -l >&3 $ cat dump.log total 3952 -rw-r--r-- 1 seb users 167212 oct 9 09:27 battlestar_1280.jpg

    - 2 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YpY6BqXVwM+ICwA=-enidentnumber

    Pgina 2

  • drwxr-xr-x 2 seb users 4096 mar 4 08:51 bin drwxr-xr-x 8 seb users 4096 mar 4 08:45 cxoffice drwx------ 2 seb users 4096 mar 10 12:29 Desktop drwx------ 13 seb users 4096 mar 6 11:49 Documents -rw-r--r-- 1 seb users 0 mar 11 11:34 dump.log -rw-r--r-- 1 seb users 3785296 dic 12 15:15 e3555_EeePC4G.pdf drwxr-xr-x 3 seb users 4096 mar 10 11:16 Games drwxr-xr-x 5 seb users 4096 mar 10 11:16 karchiver-3.4.2.b4 -rw-r--r-- 1 seb users 358 mar 11 08:51 lista -rw-r--r-- 1 seb users 608 mar 11 09:14 tmpgrp -rw-r--r-- 1 seb users 1555 mar 11 09:15 tmppwd

    Todo lo que se escribir en el canal 3 se escribir en el fichero dump.log. Luego se puede cerrar el canalrelacionndoloconunseudocanal(canaldecierre).

    $ exec 3>&-

    7.Filtro:definicin

    Unfiltro(ouncomandofiltro)esunprogramaquesabeescribiryleerdatosporloscanalesestndaresdeentradaysalida.Modificaotratasiesprecisoelcontenido.wcesunfiltro.Lepresentamosalgunos:more(muestralosdatospginaporpgina),sort(ordenacindelosdatos),grep(criteriosdebsqueda).

    8.Pipelines/tuberas

    Lasredireccionesdeentrada/salidatalescomolasqueacabadeverpermitenredireccionarlosresultadoshaciaunfichero.Luegosepuedeinyectaresteficheroenunfiltroparaextraerleotrosresultados.Estoobligaatecleardoslneas: unapara la redireccinhacia un fichero, otra para redireccionar este ficherohacia el filtro. Las tuberas opipespermitenredireccionarelcanaldesalidadeuncomandohaciaelcanaldeentradadeotro.Elcarcterquelopermite|estaccesibleconlacombinacin[AltGr]1delostecladosespaoles.

    $ ls -l > resultado.txt $ wc < resultado.txt

    seconvierteen

    $ ls -l | wc

    Esposiblecolocarvarios|enunamismalnea.

    $ ls -l | wc | wc 1 3 24

    Elprimercomandonotieneporquserunfiltro.Noeselcasomshabitual.Loimportanteesquesedebefacilitarunresultado.demparaelltimocomando,quepuedeserporejemplouncomandodeedicinoimpresin.Finalmente,elltimocomandopuedeserobjetodeunaredireccinensalida.

    $ ls -l | wc > resultado.txt

    - 3 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YpY6BqXVwM+ICwA=-enidentnumber

    Pgina 3

  • Filtrosyherramientas

    Unfiltro(ouncomandofiltro)esunprogramaquesabeescribiryleerdatosporloscanalesestndaresdeentradaysalida.Modificao trata si esprecisoel contenido.wc esun filtro. Lasherramientasno siempre se comportan comofiltros. Permitenundeterminadonmerodeaccionesen ficherosy su contenido, como,por ejemplo, dar formatooimprimir.

    1.Extraccindelosnombresyrutas

    Elcomandobasenamepermiteextraerelnombredelficheroenunaruta.

    $ basename /tmp/seb/lista lista

    Elcomandodirnameefectalocontrario,extraelaruta.

    $ dirname /tmp/seb/lista /tmp/seb

    2.Bsquedadelneas

    Se tratadeextraer lneasdeun fichero segnvarios criterios. Paraello, usteddisponede tres comandos:grep,egrepyfgrep,queleenlosdatosobiendesdeunficherodeentrada,obiendesdeelcanaldeentradaestndar.

    a.grep

    Lasintaxisdelcomandogrepesgrep [Opciones] modelo [Fichero1...].

    Elmodelosecomponedecriteriosdebsquedaqueseparecenmuchoa loscriteriosyaexpuestosparavi,porejemplo.Nohayqueolvidarquesedebeinterpretarestoscriteriosconelcomandogrep,ynoconelshell.Porlotanto,hacefaltacerrartodosloscaracteres.

    $ cat fic4 Cerdo Ternera Buey rata Rata buey $ grep "^[bB]" fic4 Buey buey

    Elcomandogreptambinpuedetomaralgunasopcionesinteresantes.

    l vefectalabsquedainversa:sevisualizantodaslaslneasquenocorrespondenaloscriterios.

    l cslodevuelveelnmerodelneasencontradas,sinmostrarlas.

    l inodiferencialasmaysculasdelasminsculas.

    l nindicaelnmerodelneaparacadalneaencontrada.

    l lenelcasodeficherosmltiples,indicaenquficherosehaencontradolalnea.

    $ grep -i "^b" fic4 Buey buey

    - 1 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 4

  • b.egrep

    Elcomandoegrepextiendeloscriteriosdebsquedaypuedeaceptarunficherodecriteriosenentrada.EquivaleaungrepE.Empleacomocriteriosexpresionesregulares.

    egrep -f fichero_criterio Fichero_bsqueda

    nicamentebuenas tardesy buenasnochesque empezarn por unamayscula o unaminscula si estnsolosenunalnea:

    ^[bB]uenas(tardes|noches)$

    VerificacinmuyescuetadelavalidezdeunadireccinIP:

    echo $IP | egrep ([0-9]{1,3}\.){3}[0-9]{1,3}

    Estalneasedescomponedelamanerasiguiente:

    l ([09]{1,3}\.){3}:www.xxx.yyy.

    l [09]:uncarcterentre0y9

    l {1,3}:repetidoentreunaytresveces,porlotanto:x,xxoxxx

    l \.:seguidodeunpunto

    l {3}:elconjuntotresveces

    Luego[09]{1,3}:.zzz

    l [09]:uncarcterentre0y9

    l {1,3}:repetidoentreunaytresveces

    Carcterespecial Significado

    | Olgico,laexpresincolocadaantesodespusdebedesaparecer.

    (...) Agrupacindecaracteres.

    [...] Uncarctertieneestaposicinentrelosindicados.

    .(punto) Cualquiercarcter.

    + Repeticin,elcarctercolocadoantesdebeapareceralmenosunavez.

    * Repeticin,elcarctercolocadoantesdebeaparecerdeceroanveces.

    ? Elcarctercolocadoantesdebeaparecerunavezcomomximo.

    {n} Elcarctercolocadoantesdebeaparecerexactamentenveces.

    {n,} Aparecenvecesoms.

    {n,m} Apareceentrenymveces.

    ^ Enprincipiodecadena.

    $ Enfinaldecadena.

    - 2 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 5

  • c.fgrep

    Elcomandofgrepesungrepsimplificadoyrpido(fastgrep)yequivaleaungrepF.Aceptatambinunficherodecriteriosdebsqueda,perodebetratarsedecriteriossimples,sincaracteresespeciales.Introduzcaenelficherodecriterioslneassencillas(textoycifras),unabsquedaporlnea.Fgrepvaabuscarenunficherometaounflujoenentradalaslneasquecorrespondenacadaunodeloscriterios.

    3.sed

    El aprendizaje de sed requerira todo un libro. Sed es un editor de flujo (Stream Editor) que permite filtrar ytransformartexto.Esunpococomouneditorquepermitemodificartextovacomandosdescripts,peroenunpasoysinedicininteractiva.Utilizaunjuegoextendidodecomandosprocedentedeleditored.Susintaxisbsicaes:

    sed -e arch

    Parautilizarsed,hayqueaprenderyentender lasexpresionesregulares.Elcuadrodelcomandoegrepretomalasintaxisbsicadelasexpresiones.Cualquierlibrosobresedpartedeestasexpresionesyrecprocamente.

    Sedseutilizamuyamenudoparasustituirvaloresporotros(sustitucin)osuprimirlneasparticulares(aunquesepodrautilizargrepenestecaso).Lasintaxisbsicadesustitucineslasiguiente:

    s///[g]

    Lag finalpermite realizarunasustitucinsobre toda la lneaencasodehayavarias coincidencias.Aqu tieneunejemploquesustituye__NOMBRE__porPepito:

    $ echo "Me llamo __NOMBRE__. Te llamas __NOMBRE__?" | sed -e s/__ NOMBRE__/Pepito/ Me llamo Pepito. Te llamas __NOMBRE? $ echo "Me llamo __NOMBRE__. Te llamas __NOMBRE__?" | sed -e s/__ NOMBRE__/Pepito/g Me llamo Pepito. Te llamas Pepito?

    Puede colocar un valor numrico en el campo nuevo para precisar, si la bsqueda comporta varios elementosagrupadosporparntesis,enquelementodelosbuscadosdebetrabajar.Aqutenemosunejemplosencilloqueaadeasteriscosalrededordelnombrepepito:

    $ echo pepito | sed -e "s/\(pepito\)/**\1**/" **pepito**

    Parasuprimirtodaslaslneasvacasoquecontienennicamenteespacios:

    $ sed -e /^ *$/d fichero

    4.Columnasycampos

    Elcomandocutpermiteseleccionarcolumnasycamposenunfichero.

    a.Columnas

    Lasintaxiseslasiguiente:

    cut -cColumnas [fic1...]

    Unacolumnaeslaposicindeuncarcterenlalnea.Elprimercarctereslacolumna1elsegundo,lacolumna2,yassucesivamente.Unalneade80caracteresdisponede80columnas.Lanumeracinempiezaa1.Eselmtodoidealparaficherosplanosyconformatofijo,dondecadacampoempiezayterminaconposicionesdadas.

    Elformatodeseleccindecolumnaeselsiguiente:

    l unacolumnasola(p.ej.c2paralacolumna2)

    - 3 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 6

  • l unintervalo(p.ej.c24paralascolumnas2,3y4)

    l unalistadecolumnas(p.ej.c1,3,6paralascolumnas1,3y6)

    l lostresalavez(p.ej.c13,5,6,12).

    $ cat lista Producto precio cantidades ratn 30 15 disco 100 30 pantalla 300 20 teclado 45 30

    $ cut -c1-5 lista Produ ratn disco panta tecla

    $ cut -c1-3,10-12,15 Prorx cantidades rat0 15 dis0 30 pan0 20 tec530

    b.Campos

    El comando cut tambin permite seleccionar campos. Se deben delimitar estos campos por defecto por unatabulacin, pero el parmetro -d permite seleccionar otro carcter (espacio, ). La seleccin de los campos esidnticaaladelascolumnas.

    Elcarcterseparadordebesernico.Noesposibleponernidos,nitres,niunacadenadeseparadores.Paraeliminarloscaracteresmltiples,utilicetr.Asimismo,elseparadorpordefectoeslatabulacin.Ahora

    bien,pordefectosesustituyenlastabulacionesconespaciosdentrodeloseditores...

    cut -dc -fCampos [fic1...]

    Lepresentamosunosejemplos.Elficherolistacontienecamposseparadosportabulaciones.

    $ cat lista Producto precio cantidades ratn 30 15 duro 100 30 disco 100 30 pantalla 300 20 teclado 45 30 tarjeta 45 30

    $ cut -f1 lista Producto ratn duro disco pantalla teclado tarjeta

    $ cut -f1,3 lista Producto cantidades ratn 15

    - 4 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 7

  • duro 30 disco 30 pantalla 20 teclado 30 tarjeta 30

    Observeque,siinvierteelordendeloscampos(f3,1),noobtendrelefectodeseado:loscampossalensiempreenelsentido1,3.

    Acontinuacinvemoscmoaislarlosnombresdeungrupoysusidentificadoresrespectivos:

    $ cat /etc/group seb@slyserver:~> cat /etc/group at:!:25: audio:x:17: avahi:!:106: beagleindex:!:107: bin:x:1:daemon cdrom:x:20: console:x:21: daemon:x:2: dialout:x:16:seb,esteban,enrique,public disk:x:6:

    $ cut -d: -f1,3 /etc/group at:25 audio:17 avahi:106 beagleindex:107 bin:1 cdrom:20 console:21 daemon:2 dialout:16 disk:6

    Sinohaydelimitador(tabulacinuotro)enunalnea,cutmuestratodalalnea.

    5.Recuentodelneas

    Elcomandowc(wordcount)permitecontarlaslneas,laspalabrasyloscaracteres.

    wc [-l] [-c] [-w] [-w] fic1

    l -l:cuentaelnmerodelneas

    l -c:cuentaelnmerodebytes

    l -w:cuentaelnmerodepalabras

    l -m:cuentaelnmerodecaracteres

    $ wc lista 12 48 234 lista

    Elficherolistacontiene12lneas,48palabrasy234caracteres.

    6.Ordenacindelneas

    - 5 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 8

  • El comando sort permite ordenar las lneas. Por defecto, la ordenacin se hace sobre toda la tabla en ordencreciente. La ordenacin es posible a partir de uno o varios campos. El separador de campos por defecto es latabulacino,almenos,unespacio.Sihayvarioscampos,elprimeroeselseparadorlosdemssoncaracteresdelcampo.

    LasintaxisdesorthaevolucionadodesdehacevariosaosyLinuxhaaplicadounestndar.Adems,yanoutilizalaantiguasintaxisbasadaen+/.Ensulugar,hayqueutilizarelparmetro-k.Lanumeracindeloscamposempiezacon1.

    sort [opciones] [-k pos1[,pos2]] [fic1...]

    $ cat lista ratn ptico 30 15 duro 30giga 100 30 duro 70giga 150 30 disco zip 12 30 disco blando 10 30 pantalla 15 150 20 pantalla 17 300 20 pantalla 19 500 20 teclado 105 45 30 teclado 115 55 30 tarjeta sonido 45 30 tarjeta vdeo 145 30

    Acontinuacinvemoscmoordenarporordenalfabticoapartirdelaprimeracolumna:

    $ sort -k 1 lista disco blando 10 30 disco zip 12 30 duro 30giga 100 30 duro 70giga 150 30 pantalla 15 150 20 pantalla 17 300 20 pantalla 19 500 20 ratn ptico 30 15 tarjeta sonido 45 30 tarjeta vdeo 145 30 teclado 105 45 30 teclado 115 55 30

    Ejemplo:ordenacinnumricaapartirdelospreciosporproductosenordendecreciente:

    $ sort -n -r -k 3 lista pantalla 19 500 20 pantalla 17 300 20 pantalla 15 150 20 duro 70giga 150 30 tarjeta vdeo 145 30

    Algunosparmetros

    Opcin Papel

    d Dictionnarysort(ordenacindediccionario).Slotomacomocriteriodeordenacinlasletras,lascifrasylosespacios.

    n Ordenacinnumrica,idealparalascolumnasdecifras.

    b Ignoralosespaciosalprincipiodelcampo.

    f Nohaydiferenciasentremaysculasyminsculas(conversinenminsculasyluegoordenacin).

    r Reverse,ordenacinenordendecreciente.

    tc Nuevodelimitadordecampoc.

    - 6 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 9

  • duro 30giga 100 30 teclado 115 55 30 teclado 105 45 30 tarjeta sonido 45 30 ratn ptico 30 15 disco zip 12 30 disco blando 10 30

    Tambinesposibleejecutarlaordenacindesdeundeterminadocarcterdeuncampo.Paraello,debeespecificarel.pos:k1.3empezarlaordenacinapartirdeltercercarcterdelcampo1.

    7.Supresindelaslneasrepetidas

    El comando uniq permite suprimir las lneas repetidas en flujos en entrada o ficheros ordenados. Por ejemplo, acontinuacin semuestra cmo sacar nicamente la lista de los GID realmente utilizados como grupo principal deusuarios:

    $ cut -d: -f4 /etc/passwd | sort -n | uniq 0 1 2 7 8 12 13 14 25 49 51 62 ...

    8.Unindedosficheros

    a.Enloscamposcomunes

    Elcomandojoinpermiteefectuarlaunindedosficherosenfuncindeuncampocomn.Sedebenordenarlosdosficherosenloscamposespecificadosenlaunin.

    join [-tc] [-1 n] [-2 m] fic1 fic2

    Laopcin-tindicalosseparadores,-1elcampodelprimerficheroy-2elcampodelsegundofichero,enloscualesefectuar launin.Observequejoingestionamal losduplicadosypuedequesedetengacomoconsecuenciadeello.

    Esposiblequeelcomando joinnoleproporcioneelresultadoesperado.Laraznesquesedetieneencuantonoencuentracorrespondenciaentredoslneas.

    b.Lneaalnea

    Elcomandopasteagrupanficherosenuno.Paraello,concatenalaslneasdecadaunodelosficherosenunasolalnea: lnea1 de fic1 con lnea2 de fic2, lnea3 de fic 3, y as sucesivamente. Es un poco lo contrario de cut. Elseparadorpordefectoeslatabulacin,peropuedeprecisarundelimitadorcon-d.

    $ cat fic1 lista_a lista_b lista_c

    $ cat fic2 lista_a2

    - 7 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 10

  • lista_b2 lista_c2

    $ paste -d: fic1 fic2 lista_a:lista_a2 lista_b:lista_b2 lista_c:lista_c2

    9.Divisindeunficheroenpartes

    a.Recortar

    Aqutenemosuncomandomuyprctico,split,quepermiterecortarungranficheroenvariostrozosconuntamaodeterminado.Lossistemasdeficherosnosontodosigualesfrentealtamaomximodeunfichero.BajoLinux,elproblema no es habitual, ya que un sistema de ficheros de tipo ext3 puede soportar ficheros de 1 TB (TB =TeraByte 1 Terabyte = 1024 GB), o sea, el equivalente a unos 130 DVD de doble capa. Pero las bandasmagnticas,oenmenormedidalosdiscosremovibles,nodisponendeestaposibilidad.

    Se suelen formatear las llavesUSBoundiscoexterno conun sistemade ficherosde tipoVFAT,procedentedelmundo de Microsoft. Este sistema de ficheros, que procede de DOS y luego de Windows 9x, garantiza unacompatibilidadentretodoslossistemas(Unix,Windows,MacOS),yaquequienpuedelomspuedelomenos.VFAT(omsbienFAT16oFAT32)soportanicamenteficherosdeuntamaomximode4 GB.UnaimagenISOdeDVDounacarpetadecopiadeseguridadnopuedeentrarenelloenunsolobloque.Por lo tanto,hace faltadividirelficheroenvariaspartes.

    split [-l n] [-b n[bkm] [fichero [prefijo]]

    Elcomandopuedefuncionarsegndosmodos:

    l recorteporlneascon-l:losficherosensalidatendrntodosnlneasdetexto(salvoelltimosisedaelcaso)

    l recortea tamao fijo con-b: los ficheros tendrn todosun tamao fijodenbytes.El sufijob indicauntamaodenbloques(512bytes),kindicankB(1024bytes)ymindicanMB(1024kB).

    Comocualquierfiltro,splitpuedecogerunflujodeentrada,comoeselcasosinoseprecisaningnfichero,osihayunguin.Unprefijodefineelnombredelosficherosensalida.Aqutenemosunficherode1GBacortarenpartesde150MB.Elprefijoesfic.Cadaficheroensalidasellamaficaa,ficab,ficac,ficad,yassucesivamente.

    $ ls -l granfichero -rw-r--r-- 1 seb users 1073741824 mar 12 19:47 granfichero $ split -b 150m granfichero fic $ ls -l fic* -rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficaa -rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficab -rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficac -rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficad -rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficae -rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficaf -rw-r--r-- 1 seb users 130023424 mar 12 20:16 ficag

    b.Reconstruir

    Unalneabastaparareconstruirunficherodivididoconlaayudadelasredirecciones:

    $ cat fic* > newfic $ ls -l newfic -rw-r--r-- 1 seb users 1073741824 mar 12 20:47 newfic

    10.Sustitucindecaracteres

    - 8 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 11

  • a.Listadecaracteres

    Elcomandotrpermitesustituirunoscaracteresconotrosysloaceptadatosqueprovengandelcanaldeentradaestndar,nodelosficheros.

    tr [opciones] original destino

    El original y el destino representan uno o varios caracteres. Se sustituyen los caracteres originales con los dedestinoenelordenindicado.Loscorchetespermitendefinirintervalos.

    Porejemplo,parasustituirlaoporlaeylaiporlaa:

    $ cat lista | tr "oi" "ea" Predut ebjete precie cantadades raten ptaque 30 15 dure 30gaga 100 30 dure 70gaga 150 30 dasce zap 12 30 dasce blande 10 30 pantalla 15 150 20 pantalla 17 300 20 pantalla 19 500 20 teclade 105 45 30 teclade 115 55 30 tarjeta senade 45 30 tarjeta vadee 145 30

    Conestecomando,puedeconvertirunacadenaenmaysculasoenminsculas.

    $ cat lista | tr "[a-z]" "[A-Z]" PRODUCTO OBJETO PRECIO CANTIDADES RATN PTICO 30 15 DURO 30GIGA 100 30 DURO 70GIGA 150 30 DISCO ZIP 12 30 DISCO BLANDO 10 30 PANTALLA 15 150 20 PANTALLA 17 300 20 PANTALLA 19 500 20 TECLADO 105 45 30 TECLADO 115 55 30 TARJETA SONIDO 45 30 TARJETA VDEO 145 30

    Sobretodo,tradmitedosparmetros,-s(squeeze)y-d(delete),quepermitensuprimircaracteres,duplicadosono.Esperfectoenelcasodeseparadoresmltiples.AcontinuacindamosunejemploprcticoenelcualsebuscaaislarladireccinIPdeunamquina.

    $ /sbin/ifconfig eth0 eth0 Vnculo encap:Ethernet HWaddr 00:13:D3:D7:A4:6C inet adr:10.9.238.170 Bcast:10.9.239.255 asque:255.255.252.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15054381 errors:0 dropped:0 overruns:0 frame:0 TX packets:4991811 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:4157389034 (3964.7 Mb) TX bytes:374974072 (357.6 Mb) Interrupcin:22 Direccin bsica:0xcc00

    Sloleinteresalalneaquecontieneinet:

    $ /sbin/ifconfig eth0| grep "inet " inet dir:10.9.238.170 Bcast:10.9.239.255 Mscara:255.255.252.0

    ParaaislarladireccinIPcolocadadespusdeinet dir:elseparador:puedeparecerinteresante,peroenestecasouncutnosdevolvera10.9.238.170 Bcast,loquenoconviene.Laartimaaconsisteensustituirtodoslosespaciosporunsolo:.Elparmetro-ssustituyeunacadenadencaracteresidnticosporunosolo.Sinose

    Suprimirlasrepeticiones

    - 9 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 12

  • precisa,eselmismocarcterencasocontrario,setratadeuncarcterdesustitucindeterminado.

    $ /sbin/ifconfig eth0| grep "inet " | tr -s " " ":" :inet:dir:10.9.238.170:Bcast:10.9.239.255:Mscara:255.255.252.0

    Yaslofaltacontar:ladireccinIPestencuartaposicin(elprimercampoantesdelprimer:estvaco).

    $ /sbin/ifconfig eth0| grep "inet " | tr -s " " ":" | cut -d: -f4 10.9.238.170

    b.Tabulacionesyespacios

    Lamayora de los editores sustituyen las tabulaciones por espacios. Ahora bien, algunos comandos esperan aobtenertabulacionescomodelimitadoresdecampos(eselcasodecut).Sinopuedeapaarsecontr,tieneasudisposicindoscomandosparaestecasoespecfico.

    El comando expand convierte las tabulaciones en espacios. El comando unexpand convierte los espacios entabulaciones.Osea,elficherolistasegnelmodeloanterior,enelcualseseparanlascolumnasporespaciosenlugardetabulaciones.Enelprimercaso,elresultadonoeselesperadoparanada.Elcomandocutintentasacareltercercampodeunficherotabulado.Comonohaytabulaciones,muestratodalalnea.

    $ cut -f1 lista Producto objeto precio cantidades ratn ptico 30 15 duro 30giga 100 30 duro 70giga 150 30 disco zip 12 30 disco blando 10 30 ...

    Elcomandounexpandconelparmetro-asustituyetodaslassecuenciasdealmenosdosespaciosporelnmeronecesariodetabulaciones.Estavezelresultadoescorrecto.

    $ unexpand -a lista | cut -f1 Producto ratn duro duro disco disco ...

    11.Visualizacindetexto

    a.Enpantallacompleta

    Nada impide desviar cualquier flujo para visualizarlo en la pantalla o por impresora. Aqu presentamos algunoscomandos.

    l pginaporpgina:pg,more,less

    l enbloque:cat

    l alrevs:tac

    l endumphexadecimal:hexdump

    l creacindeunbanner:banner

    l formateoparaimpresin:pr

    - 10 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 13

  • l numerarlaslneas:catnonl

    b.Elprincipiodeunfichero

    Paraverelprincipiodelcontenidodeunfichero,utiliceelcomandohead.

    head [-c nbcar] [-n nblneas] [fic1...]

    Elparmetro-cpermiteprecisarelnmerodebytesdeencabezamientoavisualizar.Pordefectosevisualizandiezlneas.Elparmetro-npermiteindicarelnmerodelneasavisualizar.Esposibleindicardirectamenteelnmerodelneas:

    head [-nblneas] [fic1...]

    $ head -3 lista Producto objeto precio cantidades ratn ptico 30 15 duro 30giga 100 30

    c.Finymododeesperadefichero

    Paraverlasltimaslneasdeunfichero,utiliceelcomandotail.

    tail [+/-valor[b/c]] [-f] [fic1...]

    Aligualqueparahead,pordefectosevisualizanlasdiezltimaslneas.Elvalor-numlneaspermitemodificaresteestado.Usecparaindicarunnmerodecaracteres.Unabindicaunnmerodebloques(512bytesporbloque).

    Un+invierteelordendelcomandoyseconvierteenunhead (tail +10 head -n 10).

    Finalmente, laopcin -f deja el fichero abierto.Si se insertams informacin en l (por ejemplo, un ficheroderegistros),sevisualizarsucontenidoentiemporealenlapantallahastaqueelusuariolointerrumpademaneravoluntaria([Ctrl]C).

    $ tail -5 lista pantalla 19 500 20 teclado 105 45 30 teclado 115 55 30 tarjeta sonido 45 30 tarjeta vdeo 145 30

    $ tail -10c lista eo 145 30

    d.Darformatoaunasalida

    El comandocolumn permite dar formato de tabla a la salida de un comando. La opcin -t determina cuntascolumnas se mostrarn en la salida y aade espacios para alinearlas. La opcin -s permite indicar cul es elseparador.

    $ column -s: -t /etc/group root x 0 daemon x 1 bin x 2 sys x 3 adm x 4 seb tty x 5 disk x 6 lp x 7

    12.Duplicacindelcanaldesalidaestndar

    - 11 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 14

  • En algunos casos, como por ejemplo en la generacin de ficheros de registros, puede ser necesario colocar elresultadodeuncomandoenunficheroyalavezfiltrarestemismoresultadoconotrocomando.Paraello,utiliceelcomando tee, que permite duplicar el flujo de datos. Este comando lee el flujo de datos que proviene de otrocomandoporel canaldeentrada, loescribeenun ficheroy restituyeeste flujode forma idnticaporel canaldesalida.Pordefecto,elficherogeneradosobrescribeelantiguosiexiste.

    tee [-a] nombre_fic

    Elparmetro-asignificaappend.Enestecaso,nosesobrescribeelfichero,sinoqueseinsertalainformacinalfinal.Porejemplo,supongamosquequiereobtenerenunficherolalistadelosnombresdeusuarioyquealmismotiemposevisualicesunmeroenlapantalla.

    $ cat /etc/passwd | cut -d: -f1 | tee users | wc -l 65 $ cat users root nobody nobodyV daemon bin uucp uucpa auth cron

    lp tcb ...

    13.Comparacindeficheros

    Los dos comandos que permiten comparar el contenido de dos ficheros, o de un fichero y de un flujo, son loscomandosdiffycmp.

    a.diff

    Elcomandodiffindicalasmodificacionesquehayqueaportaralosdosficherosenentradaparaquesucontenidoseaidntico.

    diff [-b] [-e] fic1 fic2

    Laopcin-bpermiteignorarlosespacios(blank),ylaopcin-epermitegenerarunscripted(noloutilizaremos).Estecomandodevuelvetrestiposdemensajes:

    l APPEND: lnea1 a lnea3,lnea4, ex 5 a 6,8significa:enlalnea5defic1hayqueinsertarlaslneas6a8defic2paraquesuscontenidosseanidnticos.

    l DELETE: lnea1,lnea2 d lnea3, ex 7,9 d 6 significa: se deben suprimir las lneas 7 a 9 de fic1, noexistendetrsdelalnea6defic2.

    l CHANGE: lnea1,lnea2 c lnea3,lnea4, ex 8,12 c 9,13significa:sedebeintercambiarlaslneas8a12defic1contralaslneas9a13defic2.

    En todos los casos, el signo las lneas de fic2concernientes.

    $ cat lista Producto objeto precio cantidades ratn ptico 30 15 duro 30giga 100 30 duro 70giga 150 30 disco zip 12 30 disco blando 10 30 pantalla 15 150 20

    - 12 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 15

  • pantalla 17 300 20 pantalla 19 500 20 teclado 105 45 30 teclado 115 55 30 tarjeta sonido 45 30 tarjeta vdeo 145 30

    $ cat lista2 Producto objeto precio cantidades ratn botones 30 15 duro 30giga 100 30 duro 70giga 150 30 disco zip 12 30 disco blando 10 30 pantalla 15 150 20 pantalla 17 300 20 pantalla 19 500 20 pantalla 21 500 20 teclado 105 45 30 teclado 115 55 30

    Elficherolistaeseloriginal.Enlista2sehamodificadolasegundalnea,sehaaadidounalneapantallaysehansuprimidolasltimasdoslneas.

    $ diff lista lista2 2c2 < ratn ptico 30 15 ---

    > ratn botones 30 15 9a10 > pantalla 21 500 20 12,13d12 < tarjeta sonido 45 30 < tarjeta vdeo 145 30

    l 2c2:sedebenintercambiarlaslneas2delistaylista2(debenconcordaroenpticooenbotones).

    l 9a10:despusdelalnea9delista(pantalla19),hayqueaadirlalnea10(pantalla21)delista2.

    l 12,13d12: se deben suprimir las lneas 12 y 13 de lista (tarjeta de sonido y vdeo), ya que no existendespusdelalnea12delista2.

    b.cmp

    Elcomandocmpcomparalosficheroscarcterporcarcter.Pordefecto,elcomandoseparaencuantoencuentralaprimeradiferenciaeindicalaposicin.

    cmp [-l] [-s] fic1 fic2

    El parmetro -l detalla todas las diferencias en tres columnas. La primera columna representa el nmero decarcterlasegunda,elvaloroctalASCIIdelcarctercorrespondientedefic1,ylatercera,elvaloroctalASCIIdelcarctercorrespondientedefic2.

    Laopcin-sdevuelvenicamenteelcdigodeerror(novisible),alquesepuedeaccederporecho$?.

    $ cmp lista lista2 lista lista2 differ: char 38, line 2 $ cmp -l lista lista2 38 157 142 39 160 157 40 164 165 41 151 164 42 161 157 43 165 156 44 145 163 182 143 145

    - 13 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 16

  • 183 154 143 ...

    14.Plazodeespera

    Elcomandosleeppermiteesperarelnmerodesegundosindicados.Elscriptseinterrumpeduranteestetiempo:elnmerodesegundosyunenterocomprendidoentre0ycuatromilmillones(136aos).

    $ sleep 10

    - 14 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Ynbd0rvVwM+ICwA=-enidentnumber

    Pgina 17

  • Losprocesos

    1.Definicinyentorno

    Un proceso representa un programa en curso de ejecucin y, al mismo tiempo, todo su entorno de ejecucin(memoria,estado,identificacin,propietario,padre...).

    Losdatosdeidentificacindeunprocesoson:

    l UnnmerodeprocesonicoPID(ProcessID):senumeracadaprocesoUnixconelfindepoderdiferenciarlodelosotros.Elprimerprocesoiniciadoporelsistemaes1,ysetratadeunprocesollamadogeneralmenteinit.SeutilizaelPIDcuandosetrabajaconunproceso.Iniciar10veceselmismoprograma(mismonombre)produce10PIDdiferentes.

    l Un nmero de proceso padre PID (Parent Process ID): cada proceso puede iniciar otros procesos, susprocesos hijos (child process). Cada proceso hijo debe contener, entre toda su informacin, el PID delprocesopadrequeloinici.TodoslosprocesostienenunPPIDsalvoelproceso0,queesunseudoprocesoquerepresentaeliniciodelsistema(creael1init).

    l Unnmerodeusuarioyunodegrupo:correspondealUIDyalGIDde lacuentadeusuarioque iniciaelproceso.Elsistemaloutilizaparadeterminar,atravsdelacuenta,lospermisosqueelprocesotieneparaacceder a los recursos. Los procesos hijos heredan ambas cuentas. En algunos casos (que veremosmsadelante)sepuedemodificarestecomportamiento.

    l Duracinyprioridaddelproceso: laduracindelprocesocorrespondeal tiempodeejecucinconsumidodesdelaltimainvocacin.Enunentornomultitarea,eltiempodeprocesadorsecomparteentrelosprocesosynotodostienenlamismaprioridad.Losprocesosdemsaltaprioridadsonejecutadosprimero.Cuandounprocesoestinactivo,suprioridadaumentaconelfindetenerlaoportunidaddeserejecutado.Cuandoestactivo, su prioridad baja con el fin de dejar paso a otro. Es el planificador de tareas del sistema el quegestionalasprioridadesylostiemposdeejecucin.

    l Directoriode trabajoactivo: trassu inicio, seconfiguraeldirectorioactualdelproceso(desdeel cual seinici).Estedirectorioservirdebaseparalasrutasrelativas.

    l Ficheros abiertos: tabla de los descriptores de ficheros abiertos. Por defecto al principio slo hay trespresentes:0,1y2 (los canalesestndares).Concadaaperturade ficheroodenuevocanal, la tabla serellena.Alcierredelproceso,secierranlosdescriptores(enprincipio).

    l Puedeencontrarmsinformacin,comoeltamaodelamemoriaasignada,lafechadeiniciodelproceso,elterminaldeatribucin,elestadodelproceso,losUIDefectivoyreal,ascomolosGIDefectivoyreal.

    2.Estadosdeunproceso

    Durantesuvida(tiempoentreelinicioylasalida)unprocesopuedepasarpordiversosestadosoprocessstate:

    l ejecucinenmodousuario(usermode)

    l ejecucinenmodoncleo(kernelmode)

    l enesperaE/S(waiting)

    l dormido(sleeping)

    l listoparalaejecucin(runnable)

    l dormidoenelswap(memoriavirtual)

    l nuevoproceso

    - 1 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YsKJ3MvVwM+ICwA=-enidentnumber

    Pgina 18

  • l findeproceso(zombie).

    3.Ejecucinensegundoplano

    Segnlovistoanteriormente,dadoqueelentornodetrabajoesmultitarea,hayundeterminadonmerodeprocesosque seejecutanyaen sumquina sinqueusted lovea.Delmismomodo,el shell queutilizaesen smismaunproceso.Cuandoinsertauncomando,elshellcreaunnuevoprocesoparaejecutarlo,esteprocesoseconvierteenunprocesohijodelshell.Unaveziniciado,hayqueesperaralfinaldesuejecucinparainiciarelsiguiente(exceptoutilizandoparaencadenarloscomandos).

    Nada impide al shell esperar el mensaje del proceso terminado para dejar paso: de hecho, una vez iniciado elcomando,elshellpuedeautorizarlainsercindeunnuevocomandosinesperarelfinaldelaejecucindelcomandoanterior.Paraello,bastainsertar,despusdehabertecleadoelcomando,elampersand&.Enestecaso,elshellyelcomandoiniciadofuncionarnenparalelo.

    $ ls -R / > ls.txt 2/dev/null & [1] 21976 $ [1] Done ls -l -R / > ls.txt 2/dev/null $ ls fic1 fic3 lista ls.txt dir1 users fic2 fic4 lista2 mypass pepito.tar.gz

    Justodespusde la insercin, apareceuna cifra.Hayque recordarlo, yaque se tratadel PIDdel nuevoprocesoiniciadoensegundoplano.Despusdeotrainsercin,unlneaDoneindicaqueeltratamientosedaporfinalizado.Elvalor[1]espropiodeunshellparticular(ksh).

    Algunasobservacionesencuantoalusodelinicioensegundoplano:

    l Elproceso iniciadoen segundoplanonodeberaesperar serotro shell, dadoque seproducira confusinentreestecomandoyelpropioshell.

    l Elprocesoiniciadonodeberamostrarresultadosenlapantallaporqueentraranenconflictoconlosdelshell(porejemplo,aparicindeunalneaenmediodeunainsercin).

    l Finalmente,cuandosesaledelshell,sesaletambindetodossushijos:enestecaso,noabandoneelshellenmitaddeunprocesamientoimportante.

    4.Background,foreground,jobs

    Puederetomarelcontroldelshellsihainiciadounprocesoensegundoplano.Puedepararlodemaneratemporaltecleando[Ctrl]Z:

    $ sleep 100 [1]+ Stopped sleep 100

    - 2 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YsKJ3MvVwM+ICwA=-enidentnumber

    Pgina 19

  • Sehaparadoelproceso:sehasuspendidosuejecucinhastaquevuelvaaponerloenprimerplanoconelcomandofg(foreground):

    $ fg sleep 100

    Cuandoejecutauncomando,obtieneunnmeroentrellaves:eselnmerodejob.Puedeobtenerunalistadetodaslastareasconelcomandojobs.

    $ jobs [1]- Stopped sleep 100 [2]+ Stopped sleep 100

    Loscomandosbgyfgpermitenactuarenestosjobstomandocomoparmetrosunmero.Seejecutaelcomandobgenunjobparadoparainiciarlodenuevoensegundoplano.Sevuelveainiciareljob2ensegundoplano:

    $ bg 2 [2]+ sleep 100 & $ [2]+ Done sleep 100

    5.Listadelosprocesos

    Elcomandops(processstatus)permiteobtenerinformacinsobrelosprocesosencurso.Siseejecutasolo,visualizanicamentelosprocesosencursoiniciadosporelusuarioydesdelaconsolaactual.

    $ ps PID TTY TIME CMD 4334 pts/1 00:00:00 bash 5017 pts/1 00:00:00 ps

    Paraobtenermsinformacin,utiliceelparmetro-f.

    ps -f UID PID PPID C STIME TTY TIME CMD seb 4334 24449 0 09:46 pts/1 00:00:00 /bin/bash seb 5024 4334 0 10:51 pts/1 00:00:00 ps -f

    Elparmetro-edainformacinsobretodoslosprocesosencurso.

    $ ps -ef UID PID PPID C STIME TTY TIME CMD ...

    seb 26431 1 0 Mar04 ? 00:00:30 kded [kdeinit] seb 26436 26322 0 Mar04 ? 00:00:03 kwrapper ksmserver seb 26438 1 0 Mar04 ? 00:00:00 ksmserver [kdeinit] seb 26439 26424 0 Mar04 ? 00:00:50 kwin [kdeinit seb 26441 1 0 Mar04 ? 00:00:28 kdesktop [kdeinit] seb 26443 1 0 Mar04 ? 00:03:40 kicker [kdeinit] seb 26453 1 0 Mar04 ? 00:00:00 kerry [kdeinit seb 26454 26424 0 Mar04 ? 00:00:01 evolution seb 26465 26424 0 Mar04 ? 00:00:11 kde-window-decorator seb 26467 1 0 Mar04 ? 00:00:02 gconfd-2 12 seb 26474 1 0 Mar04 ? 00:00:01 knotify [kdeinit] seb 26485 1 0 Mar04 ? 00:03:06 beagled ...

    Elparmetro-upermiteprecisarunalistadeunoovariosusuariosseparadosporunacoma.Elparmetro-gefectalomismoperoparalosgrupos,-tparalosterminalesy-pparaunosPIDdeterminados.

    $ ps -u root PID TTY TIME CMD 1 ? 00:00:05 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:09 ksoftirqd/0

    - 3 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YsKJ3MvVwM+ICwA=-enidentnumber

    Pgina 20

  • 5 ? 00:00:23 events/0 6 ? 00:00:00 khelper 25 ? 00:00:00 kblockd/0 26 ? 00:00:00 kacpid 27 ? 00:00:00 kacpi_notify 130 ? 00:00:00 cqueue/0 131 ? 00:00:00 kseriod 156 ? 00:00:22 kswapd0 157 ? 00:00:00 aio/0...

    Finalmenteelparmetro-lofrecemsinformacintcnica.

    $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 4704 24449 0 75 0 - 1213 wait pts/3 00:00:00 bash

    Acontinuacinpresentamoseldetalledealgunascolumnas.

    6.Paradadeunproceso/seales

    Esposibledetenerunprocesoenprimerplanoconlacombinacindeteclas[Ctrl]Z.Cuandounprocesoseejecutaensegundoplano,nolopuedepararcualquiercombinacindeteclas,almenosqueseutiliceelgestordejobsconfgybg.Puede resultarnecesariomandarle sealesespecialesaeseprocesoensegundoplano.Paraello,hayqueemplear el comando kill. A diferencia de lo que parece indicar su nombre, el papel de este comando no esobligatoriamentedestruiroterminarunproceso(recalcitranteono),sinomandarsealesalosprocesos.

    kill [-l] -Num_seal PID [PID2...]

    Lasealesunodelosmediosdecomunicacinentrelosprocesos.Cuandosemandaunasealaunproceso,stedebeinterceptarlayreaccionarenconsecuencia.Sepuedenignoraralgunasseales,perootrasno.SegnlosUnix,sedisponedeunnmeromsomenosimportantedeseales.Senumeranynombranlasseales,perocuidado:sibien los nombres suelen ser comunes de un Unix a otro, los nmeros no lo son obligatoriamente. La opcin -lpermiteobtenerlalistadelasseales.

    Columna Definicin

    UID UserID,nombredelusuario.

    PID ProcessID,nmerodelproceso.

    PPID ParentProcessID,nmerodelprocesopadre.

    C Factordeprioridad,cuantomsgrandeeselvalor,mselevadaeslaprioridad.

    STIME Horadeiniciodelproceso.

    TTY Nombredelterminaldesdeelcualseejecutelproceso.

    TIME Duracindetratamientodelproceso.

    CMD Comandoejecutado.

    F Banderasdelproceso(saledelmbitodeestelibro).

    S EstadodelprocesoS(sleeping)R(running)Z(zombie).

    PRI Prioridaddelproceso.

    NI Nice,incrementoparaelscheduler.

    Seal Papel

    - 4 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YsKJ3MvVwM+ICwA=-enidentnumber

    Pgina 21

  • $ sleep 100& [1] 5187 $ kill 5187 $ [1]+ Completado sleep 100 $ sleep 100& [1] 5194 $ kill -9 5194 [1]+ Proceso parado sleep 100

    7.nohup

    Cuandosesaledelshell(exit,[Ctrl]D...)semandalaseal1SIGHUPaloshijosparaqueterminenellostambin.Cuandoseiniciaunprocesolargoensegundoplanoyelusuarioquieresalirdelshell,entoncesseparaesteprocesoyhabrquevolveraempezarlo.Lamaneradeevitarestoesiniciarelprocesoconelcomandonohup.Enestecaso,elprocesoiniciadonoreaccionarmsalasealSIGHUP,yporlotantopodrsalirdelshell,elcomandoseguirsuejecucin.

    Pordefecto,loscanalesdesalidayerrorestndaresseredirigenhaciaunficheronohup.out,salvosiseprecisalaredireccindemaneraexplcita.

    $ nohup ls -lR / & 10206 $ Sending output to nohup.out

    Cuandounprocesohijofinaliza,mandaunasealSIGCHLDasuprocesopadre.Salvocasoexcepcional(unproceso padre desvinculado del hijo), el proceso padre debe obtener tantosSIGCHLD comohijos inici o

    comoSIGHUPemiti.Sielpadreterminaantesqueloshijos,stosseconvertirnenprocesoszombis:lassealesSIGCHLD son enviadas a... nadie. El proceso hijo ha finalizado correctamente, hamuerto, no consume ningnrecurso.Noselopuedematar(yaqueestmuerto),perosigueocupandounaentradaenlatabladelosprocesos.initlorecupera,ycomoestsiempreenespera,elzombipuedeterminarpordesaparecer.

    8.niceyrenice

    El comando nice permite iniciar un comando con una prioridadms baja para permitir a otros posibles procesosejecutarsemsrpidamente.

    nice [-valor] comando [argumentos]

    Unvalorpositivocausarunabajadadeprioridadunonegativo,elaumentodelaprioridad(siestautorizado).Elvalordebeestarcomprendidoentre20y20.Cuantomselevadoeselvalor,menoreslaprioridad.

    $ nice -10 ls -lR / >lista 2>/dev/null& 10884 $ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 80808001 U N+ 75 10884 10822 28.5 54 10 0 848K aa3b3a9c ttyp4 0:03.32 ls

    1(SIGHUP) ElpadremandaHangUpatodossushijoscuandotermina.

    2(SIGINT) Interrupcindelprocesopedido(tecla[Supr],[Ctrl]C).

    3(SIGQUIT) demSIGINT,perocongeneracindeunCoreDump(ficherodedepuracin).

    9(SIGKILL) Sealquenosepuedeignorar,fuerzaelprocesoaterminardemaneraexpeditiva.

    15(SIGTERM) Sealmandadapordefectoporelcomandokill.Pidealprocesoterminarconnormalidad.

    - 5 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YsKJ3MvVwM+ICwA=-enidentnumber

    Pgina 22

  • Elcomandorenicefuncionaunpococomonice,peropermitemodificarlaprioridadenfuncindeunusuario,ungrupoounPID.Elprocesodebeestaryaejecutndose.

    renice [-n prio] [-p] [-g] [-u] ID

    Laprioridaddebeestarentre20y20.Elusuarioestndarslopuedeutilizarlosvaloresentre0y20quepermitenbajarlaprioridad.Laopcin-pprecisaunPID,-gunGIDy-uunUID.

    9.time

    El comando timemide las duraciones de ejecucin de un comando, lo que es ideal para conocer los tiempos deejecucin,ydevuelvetresvalores:

    l real:duracintotaldeejecucindelcomando

    l user:duracindeltiempodeCPUnecesarioparaejecutarelprograma

    l system:duracindeltiempodeCPUnecesarioparaejecutarloscomandosrelacionadosconelOS(llamadasalsistemadentrodeunprograma).

    Elresultadoapareceporelcanaldeerrorestndar2.Sepuedetenerunaindicacindelacargadelamquinaporelclculoreal/(user+system).Sielresultadoesinferiora10,lamquinadisponedeunbuenrendimientomsallde20,lacargadelamquinaesdemasiadopesada(rendimientoreducido).

    $ time ls -lR /home ...

    real 4.8 user 0.2 sys 0.5

    - 6 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YsKJ3MvVwM+ICwA=-enidentnumber

    Pgina 23

  • Mstodavadelbash

    1.Alias

    Un alias es un atajo a un comando y a sus posibles parmetros. Se define con el comandoalias. Utilizado sinargumentos,listalosaliasdisponibles.

    $ alias alias ..=cd .. alias ...=cd ../.. alias cd..=cd .. alias dir=ls -l alias l=ls -alF alias la=ls -la alias ll=ls -l alias ls=ls $LS_OPTIONS alias ls-l=ls -l alias md=mkdir -p alias o=less alias rd=rmdir ...

    Ustedpuedecrearsuspropiosalias.

    $ alias deltree=rm -rf

    2.Agrupacindecomandos

    Elencadenamientodecomandosesposiblecon.Tambinesposibleagruparloscomandos.Cuandoejecutaloscomandossiguientes:

    $ uname -a ; pwd ; ls -l >resultado.txt &

    Se ejecuta nicamente el ltimo comando en segundo plano y slo se redirecciona su resultado en el ficheroresultado.txt.Unasolucinsera:

    $ uname -a >resultado.txt & ; pwd >>resultado.txt & ; ls -l >>resultado.txt & [1] 18232 [2] 18238 [3] 18135

    Esunasolucincomplejaynofuncionarsiempre.Adems,inclusosiseinicianloscomandosdemanerasecuencial,seejecutantodosenparalelo.Elprimeroquefinaliceserelprimeroenescribirenelfichero.Lasolucinconsisteenutilizarparntesis.

    $ (uname -a ; pwd ; ls -l) > resultado.txt & [1] 18239 $ [1] Done ( uname -a; pwd; ls -l ) > resultado.txt

    Entodosloscasos,seiniciantodosloscomandoscolocadosentreparntesisconunsubshell,queluegoejecutarloscomandosprecisadosdemanerasecuencialtalcomoestindicado.As,laredireccinconciernealconjuntodeloscomandos y nada impide lanzar este subshell en segundo plano.De hecho, se distingue claramente un solo PID18239durantelaejecucindeloscomandos.

    Otraposibilidadconsisteenutilizar llaves{...}.Enestecaso,noseejecutarningnsubshell,ysiseejecutauncomandointerno(cduotro),conciernealshellactivo.Sedebecolocarlallavedecierrejustodespusdeun.

    $ { uname -a; pwd; ls -l; } > resultado.txt

    Sepuedecomprobarladiferenciafcilmenteentrelasdossintaxisconexit.Elprimerejemploparecenohacernada,mantenindoseenelshellhijo.Elsegundosaledesushell.

    - 1 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Yr5VJ+7VwM+ICwA=-enidentnumber

    Pgina 24

  • $ (exit) $ { exit; }

    Cuidado con los parntesis, en particular en programacin. Como se lanza la agrupacin dentro de otroproceso,lasposiblesvariablesmodificadasdentrodelaagrupacinnosernvisiblesunavezterminadala

    ejecucin.

    3.Relacinyejecucincondicional

    Adems del encadenamiento clsico, se puede relacionar y ejecutar los comandos de manera condicional. Lacondicindeejecucindeuncomandoeselxitoonodelanterior.Unavezejecutado,cadacomandodevuelveuncdigoderetorno,engeneral0sitodohasalidobien,1o2encasodeerror.Elshellpuederecuperarestevalorconlavariable$?.

    $ ls ...

    $ echo $? 0

    Loscaracteres&&y||permitenefectuarunaejecucincondicional.

    comando1 && comando2 comando1 || comando2

    Seejecutarelcomandocolocadodespusde&&nicamentesielcomandoanteriorhadevuelto0(xito).Sloseejecutarelcomandocolocadodespusde||sielcomandoanteriorhadevueltoalgodiferentea0.

    $ grep "ratn" lista && echo "Ratn encontrado" || echo "Ratn no encontrado" ratn ptico 30 15 Ratn encontrado $ grep "memoria" lista && echo "Memoria encontrada" || echo "Memoria imposible de encontrar" Memoria imposible de encontrar

    - 2 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0Yr5VJ+7VwM+ICwA=-enidentnumber

    Pgina 25

  • Lasvariables

    Se distinguen tres tipos: usuario, sistema y especiales. El principio consiste en poder asignar un contenido a unnombredevariable,engeneralunacadenadecaracteresovaloresnumricos.

    1.Nomenclatura

    Unnombredevariablesobedeceaciertasreglas:

    l Sepuedecomponerdeletrasminsculas,maysculas,cifras,caracteresdesubrayado.

    l Elprimercarcternopuedeserunacifra.

    l Eltamaodeunnombresueleserilimitado(peronohayquepasarsetampoco).

    l Las convenciones quieren que las variables de usuario estn en minsculas para diferenciarlas de lasvariablesdesistema.Aeleccindelusuario.

    2.Declaracinyasignacin

    Sedeclaraunavariableencuantoseleasignaunvalor.Seefectalaasignacinconelsigno=,sinespacioantesnidespusdelsigno.

    var=Hola

    3.Accesoyvisualizacin

    Puedeaccederalcontenidodeunavariablecolocandoelsigno$delantedelnombredelavariable.Cuandoelshellencuentrael$,intentainterpretarlapalabrasiguientecomosifueraunavariable.Siexiste,entoncessesustituyeel$nombre_variableporsucontenido,oporuntextovacoenelcasocontrario.Sehablatambindereferenciadodevariable.

    $ ruta=/tmp/seb $ ls $ruta ...

    $ cd $ruta $ pwd /tmp/seb $ cd $ruta/dir1 $ pwd /tmp/seb/dir1

    Paravisualizar la listade lasvariables, seutilizael comandoenv.Muestra lasvariablesdeusuarioydesistema,nombreycontenido.

    $ env LESSKEY=/etc/lesskey.bin NNTPSERVER=news INFODIR=/usr/local/info:/usr/share/info:/usr/info MANPATH=/usr/local/man:/usr/share/man KDE_MULTIHEAD=false SSH_AGENT_PID=26377 HOSTNAME=p64p17bicb3 DM_CONTROL=/var/run/xdmctl XKEYSYMDB=/usr/share/X11/XKeysymDB HOST=p64p17bicb3 SHELL=/bin/bash TERM=xterm PROFILEREAD=true

    - 1 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YoYSgv7VwM+ICwA=-enidentnumber

    Pgina 26

  • HISTSIZE=1000 ...

    Unavariablepuedecontenercaracteresespeciales,particularmenteelespacio.Elejemplosiguientenofunciona:

    $ c=Hola amigos : not found $ echo $c

    Para hacer que funcione, hay que cerrar los caracteres especiales uno por uno, o colocarlos entre comillas oapstrofes.

    c=Hola\ Amigos # Solucin pesada c="Hola amigos" # Solucin correcta c=Hola amigos # Solucin correcta

    Laprincipaldiferenciaentrelascomillasylosapstrofeseslainterpretacindelasvariablesydelassustituciones."ysecierranmutuamente.

    $ a=Julio $ b=Csar $ c="$a $b conquist la Galia" $ d=$a $b conquist la Galia $ echo $c Julio Csar conquist la Galia $ echo $d $a $b conquist la Galia $ echo "Linux es genial" Linux es genial $ echo Linux "demasiado bien" Linux "demasiado bien"

    4.Supresinyproteccin

    Sesuprimeunavariableconelcomandounset.Puedeprotegerunavariableenmodoescrituraycontrasusupresinconelcomandoreadonly.Unavariableenmododeslolectura,inclusovaca,esexclusiva.Noexisteningnmediodesustituirlaenescrituraydesuprimirla,salvosaliendodelshell.

    $ a=Julio $ b=Csar $ echo $a $b Julio Csar $ unset b $ echo $a $b Julio $ readonly a $ a=Nern a: is read only $ unset a a: is read only

    5.Export

    Pordefectounavariableesaccesiblenicamentedesdeelshelldondehasidodefinida.Elsiguienteejemplodeclaralavariableaenelentornodelshellactualyluegotratadevisualizarsuvaloratravsdeunscriptlanzadodesdeestemismoshell.Elscriptnoreconocelavariablea:nosevisualizanada.

    $ a=Julio $ echo echo "a=$a" > ver_a.sh $ chmod u+x ver_a.sh $ ./ver_a.sh a=

    El comandoexport permite exportar una variable demanera que su contenido sea visible por los scripts y otrossubshells. Se puedenmodificar las variables exportadas en el script, pero estasmodificaciones slo se aplican al

    - 2 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YoYSgv7VwM+ICwA=-enidentnumber

    Pgina 27

  • scriptoalsubshell.Estavez,elprimerscriptpuedeaccederalavariableaexportada.Perolasmodificacionessiguenlocalesenelscript.Unavezstehaterminado,lamodificacindesaparece.

    $ export a $ ./ver_a.sh a=Julio $ echo a=Nern ; echo "a=$a" >> ver_a.sh $ ./ver_a.sh a=Julio a=Nern $ echo $a Julio

    6.Llaves

    Lasllavesbsicas{}permitenidentificarelnombredeunavariable.Imaginemoslavariableficheroquecontieneelnombredeficherolista.Ustedquierecopiarlista1enlista2.

    $ fichero=lista $ cp $fichero1 $fichero2 cp: operando fichero que falta Para saber ms, haga: cp --help.

    Nofunciona,yaquenoseinterpreta$ficherosino$fichero1y$fichero2,quenoexisten.

    $ cp ${fichero}2 ${fichero}1

    Enestecaso,estalneaequivalea:

    $ cp lista2 lista1

    7.Llavesysustitucincondicional

    Lasllavesdisponendeunasintaxisparticular.

    {variable:Sustitucin}

    Segnelvalorolapresenciadelavariable,esposiblesustituirsuvalorporotro.

    $ echo $nombre

    $ echo ${nombre:-Juan} Juan $ echo $nombre

    $ echo ${nombre:=Juan}

    Sustitucin Significado

    {x:-texto} Silavariablexestvacaoesinexistente,eltextocogersusitio.Encasocontrario,eselcontenidodelavariableelqueprevaldr.

    {x:=texto} Silavariablexestvacaoesinexistente,eltextocogersusitioyseconvertirenelvalordelavariable.

    {x:+texto} Silavariablexestdefinidaynovaca,eltextocogersusitio.Enelcasocontrario,unacadenavacacogesulugar.

    {x:?texto} Silavariablexestvacaoesinexistente,seinterrumpeelscriptysevisualizaelmensajedetexto.Sieltextoestausente,sevisualizaunmensajedeerrorestndar.

    - 3 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YoYSgv7VwM+ICwA=-enidentnumber

    Pgina 28

  • Juan $ echo $nombre Juan $ echo ${nombre:+"Valor definido"} Valor definido $ unset nombre $ echo ${nombre:?Variable ausente o no definida} nombre: Variable ausente o no definida $ nombre=Juan $ echo ${nombre:?Variable ausente o no definida} Juan

    8.Variablesdesistema

    Ademsdelasvariablesqueelusuariopuededefinirporsmismo,seiniciaelshellconunciertonmerodevariablespredefinidas tiles para ciertos comandos y accesibles por el usuario. Se puedemodificar el contenido de estasvariables de sistema, pero hay que ser cuidadoso, ya que algunas tienen una incidencia directa sobre elcomportamientodelsistema.

    9.Variablesespeciales

    Variable Contenido

    HOME Rutadeaccesodeldirectoriodeusuario.DirectoriopordefectoencasodeusodeCD.

    PATH Listadedirectorios,separadospor:,dondeelshellvaabuscarloscomandosexternosyotrosscriptsybinarios.Labsquedasehaceenelordendelosdirectoriosinsertados.

    PS1 PromptString1,cadenaquerepresentaelpromptestndarvisualizadoenlapantallaporelshellenesperadeinsercindecomando.

    PS2 PromptString2,cadenaquerepresentaunpromptsecundarioencasodequesedebacompletarlainsercin.

    IFS InternalFieldSeparator,listadeloscaracteresqueseparanlaspalabrasenunalneadecomandos.Pordefectosetratadelespacio,delatabulacinydelsaltodelnea.

    MAIL Rutayficheroquecontienelosmensajesdelusuario.

    SHELL Rutacompletadelshellencursodeejecucin.

    LANG Definicindelidiomaautilizar,ascomodeljuegodecaracteres.

    USER Nombredelusuarioencurso.

    LOGNAME Nombredelloginutilizadodurantelaconexin.

    HISTFILE Nombredelficherodelhistorial,engeneral$HOME/.sh_history.

    HISTSIZE Tamaoennmerodelneasdelhistorial.

    OLDPWD Rutadeaccesodeldirectorioalquesehaaccedidoanteriormente.

    PS3 Definelalneadecomandosparaescribirunselect.

    PWD Rutaactual.

    RANDOM Generaycontieneunnmeroaleatorioentre0y32767.

    - 4 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YoYSgv7VwM+ICwA=-enidentnumber

    Pgina 29

  • Setratadevariablesaccesiblesnicamenteparalecturaycuyocontenidosuelesercontextual.

    $ echo $$ 23496 $ grep memoria lista $ echo $? 1 $ grep ratn lista ratn ptico 30 15 $ echo $? 0 $ ls -lR >pepito.txt 2>&1 & 26675 $ echo $! 26675

    10.Longituddeunacadena

    Esposibleobtenerlalongituddeunacadenaconelcarcter#.

    $ a=Julio $ echo "Longitud de $a: ${#a}" Longitud de Julio: 5

    11.Tablasycampos

    Linuxcuentacondosmediosparadeclararunatabla:lautilizacindeloscorchetes[ ]ylacreacinglobal.Elprimerelementoes0elltimo,1023.Paraaccederalcontenidodelatabla,hayqueponerlavariableYelelementoentrellaves{}.

    $ Nombre[0]="Julio" $ Nombre[1]="Romn" $ Nombre[2]="Francisco" $ echo ${Nombre[1]} Romn

    o:

    $ Nombre=(Julio Romn Francisco) $ echo ${nombre[2]} Francisco

    Paralistartodosloselementos:

    $ echo ${Nombre[*]} Julio Romn Francisco

    Paraconocerelnmerodeelementos:

    $ echo ${#Nombre[*]} 3

    Variable Contenido

    $? Cdigoderetornodelltimocomandoejecutado.

    $$ PIDdelshellactivo.

    $! PIDdelltimoprocesoiniciadoensegundoplano.

    $- Lasopcionesdelshell.

    - 5 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YoYSgv7VwM+ICwA=-enidentnumber

    Pgina 30

  • Sielndiceesunavariable,nosepone$delante:

    $ idx=0 $ echo ${Nombre[idx]} Julio

    12.Variablestipadas

    Lasvariablespuedenserdetiponumricoentero(integer)conelcomandotypeset i.Laventajaesquepermiteefectuarclculosycomparacionessinpasarporexpr.Elcomandoleto((...))permiteclculossobrevariables.

    $ typeset -i resultado $ resultado=6*7 $ echo $resultado 42 $ resultado=Error ksh: Error: bad number $ resultado=resultado*3 126 $ typeset -i add $ add=5 $ let resultado=add+5 resultado=resultado*add $ echo $resultado 50

    Operador Papel

    + - * / Operacionessencillas

    % Mdulo

    < > = Comparaciones,1siverdadero,0sifalso

    == != Igualodiferente

    && || Comparacionesrelacionadasconunoperadorlgico& | ^ LgicobinarioANDORXOR

    - 6 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YoYSgv7VwM+ICwA=-enidentnumber

    Pgina 31

  • Configuracindelbash

    1.Ficherosdeconfiguracin

    Sepuedelanzarelshellbashenvariosmodos:

    l shellinteractivadeconexin(loginshell)

    l shellinteractivasimple

    l shellnointeractiva

    l elmodosh

    l etc.

    Segnsumododelanzamiento,elshellvaabuscaryejecutarvariosscriptsyficherosdeconfiguracin.Unficherodeconfiguracin es un script de shell, una secuencia de comandos individuales que tiene como meta configurar elentornodelusuario.

    a.Shelldeconexin

    Selanzaelshelldeconexindespusdelainsercindelloginydelacontraseaenlaconsola.Correspondealquesehaprecisadoal finaldecada lneade/etc/passwd.Enestemodo,elshellbuscaejecutar,enesteordenysiestnpresentes:

    l /etc/profile

    l ~/.bash_profile

    l ~/.bash_login

    l ~/.profile

    Enelmomentodedesconectarse,intentaejecutar:

    l ~/.bash_logout

    b.Shellsimple

    El shell interactivo simple corresponde a la ejecucin del bash en una ventana (xterm, konsole), una consola omanualmente(teclearbashenunaconsola).Enestecaso,sloseejecutarelficherosiguientesiexiste:

    l ~/.bashrc

    Observe que en muchas distribuciones Linux, .bashrc es llamado o bien por .bash_profile, o bien poretc/profileyqueporlotantoeslaconfiguracinubicadaen.bash_profilelaquesiempreserinvocada.

    c.ModoBourneshell

    CuandoseiniciaelbashenmodoBourneShellmedianteelcomandosh,enshelldeconexinono,intentaejecutarlosficherosenesteorden:

    - 1 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YugA6QvWwM+ICwA=-enidentnumber

    Pgina 32

  • l /etc/profile

    l ~/.profile

    d.Modonointeractivo

    Sepuedeiniciarelshellenmodointeractivo.Sueleserelcasocuandoustedejecutaunscript.Enestecaso,nohayningn script ejecutado por defecto en el momento del inicio salvo si usted especifica una variable llamadaBASH_ENVquecontienelarutadeunscript.Enestecasobashcargayejecutaesteficheroantesdecomenzarconlaejecucindelscriptodelcomando.

    2.Comandosset

    Elshelldisponedeunadecenasdeopcioneslamayoradeellassepuedenconfigurarconlaayudadelcomandoset.Lasquesiguenrepresentanunmeroresumen.Elantesdeunaopcinlaactiva.Un+ladesactiva.

    Elmanualdelshellleproporcionartodaslasopcionesposibles.

    Opcin Resultado

    a/oallexport Seexportarntodaslasvariablesdemaneraautomtica.

    u/onounset Pordefecto,elshelltratalasvariablesinexistentescomocadenasvacas.Estaopcinproduceunerrorsilavariablenoexiste.

    x/oxtrace Muestratodosloscomandosamedidaqueseejecutan:idealalprincipiodelscriptparadepuracin.

    ovi Usodelalneadecomandosconlasintaxisdevi.

    oemacs Usodelalneadecomandosconlasintaxisdeemacs.

    C/onoclobber Prohbelasredireccionesensalidasielficheroyaexiste.

    history Autorizalagestindelhistorial.

    - 2 - ENI Editions - All rights reserved - Noe Fernando Solis May

    enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FTkkuRWRpdGlvbnMuTUVESUFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VOSS5FZGl0aW9ucy5NRURJQXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAABGNjA5ODQ4IC0gTm9lIEZlcm5hbmRvIFNvbGlzIE1heSAtIDg2MTk1YmFjLTFkOTEtNGQzZC05YzE5LTU2NGNkOWE5YWY0YugA6QvWwM+ICwA=-enidentnumber

    Pgina 33

    5.1_Requisitos y objetivos(1)5.2_El shell bash(1)5.3_La gestion de los ficheros(1)5.4_Buscar ficheros(1)5.5_El editor vi(1)5.6_Redirecciones(1)5.7_Filtros y herramientas(1)5.8_Los procesos(1)5.9_Mas todavia del bash(1)5.10_Las variables(1)5.11_Configuracion del bash(1)5.12_Programacion shell(1)5.13_SQL(1)