Linux basico-6.PDF

31
LINUX B LINUX B á á sico (6. Shells(1)) sico (6. Shells(1)) 1 1 LINUX B LINUX B á á sico sico TAKASHI SUGASAWA

Transcript of Linux basico-6.PDF

Page 1: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 11

LINUX BLINUX Báásicosico

TAKASHI SUGASAWA

Page 2: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 22

Programa del cursoPrograma del curso

1.1. IntroducciIntroduccióón a LINUXn a LINUX2.2. OperaciOperacióón bn báásica de LINUXsica de LINUX3.3. OperaciOperacióón de archivos y directoriosn de archivos y directorios4.4. Editor viEditor vi5.5. ComprensiComprensióón del sistema de ficherosn del sistema de ficheros6.6. Shells(1)Shells(1)7.7. Shells(2)Shells(2)8.8. Shells(3)Shells(3)9.9. Otros comandosOtros comandos

Page 3: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 33

LINUX BLINUX Báásicosico66. . Shells(1)Shells(1)

6.1 6.1 ComprensiComprensióón de shellsn de shells6.2 Caracteres para completar nombres 6.2 Caracteres para completar nombres

del ficherosdel ficheros6.3 Tuber6.3 Tuberíías y redireccionamientos de as y redireccionamientos de

entrada y salidaentrada y salida6.4 Sustituciones6.4 Sustituciones6.5 Comillas y ap6.5 Comillas y apóóstrofosstrofos6.6 Grupos de comandos6.6 Grupos de comandos

ÍÍndicendice

Page 4: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 44

66.1.1 ComprensiComprensióón de shellsn de shells(1) (1) ¿¿QuQuéé es shell?es shell?•• Shell es una aplicaciShell es una aplicacióón como "Sn como "Síímbolo del sistema" en mbolo del sistema" en

el Windows.el Windows.•• Shell empieza automShell empieza automááticamente cuando un usuario se ticamente cuando un usuario se

registra.registra.•• Shell funciona como interfaz principal entre el sistema Shell funciona como interfaz principal entre el sistema

operativo y el usuario.operativo y el usuario.•• Shell interpreta sus comandos u Shell interpreta sus comandos u óórdenes.rdenes.•• Shell no es un parte del nShell no es un parte del núúcleo del sistema operativo.cleo del sistema operativo.•• Hay mHay múúltiples shells instalados (Shell Bourne, BASH, ltiples shells instalados (Shell Bourne, BASH,

Shell C, tcsh, zsh,...). El shell por omisiShell C, tcsh, zsh,...). El shell por omisióón de LINUX es n de LINUX es bash.bash.

Page 5: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 55

6.1(2) Variedad de 6.1(2) Variedad de shellsshells

•• El shell derivado de Shell C.El shell derivado de Shell C.•• Proporciona varias caracterProporciona varias caracteríísticas mejoradas.sticas mejoradas.

tcshtcsh(/bin/tcsh)(/bin/tcsh)

•• El shell derivado de Shell Bourne.El shell derivado de Shell Bourne.•• Proporciona varias caracterProporciona varias caracteríísticas mejoradas.sticas mejoradas.•• El shell por omisiEl shell por omisióón de LINUXn de LINUX

BASHBASH(/bin/bash)(/bin/bash)

•• El shell antiguo y muy comEl shell antiguo y muy comúún tambin tambiéén.n.•• EstEstáá disponible en casi todos los sistemas de UNIX.disponible en casi todos los sistemas de UNIX.•• La sintaxis del shell C es muy parecida al lenguaje La sintaxis del shell C es muy parecida al lenguaje

de programacide programacióón C.n C.

Shell CShell C(/bin/csh)(/bin/csh)

•• El shell mEl shell máás antiguo.s antiguo.•• El shell original de UNIX.El shell original de UNIX.•• EstEstáá disponible en todos los sistemas de UNIX.disponible en todos los sistemas de UNIX.

Shell BourneShell Bourne(/bin/sh)(/bin/sh)

Hay otros, Shell Z, Shell Korn, ...Hay otros, Shell Z, Shell Korn, ...

Page 6: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 66

6.1(3) Shells disponibles en el sistema6.1(3) Shells disponibles en el sistema

Para saber los shells disponibles en el sistema, se Para saber los shells disponibles en el sistema, se referimos el archivo "/etc/shells". referimos el archivo "/etc/shells".

[usr001[usr001@linuxpc@linuxpc usr001]$ cat /etc/shellsusr001]$ cat /etc/shells/bin/sh/bin/sh/bin/bash/bin/bash/sbin/nologin/sbin/nologin/bin/bash2/bin/bash2/bin/ash/bin/ash/bin/bsh/bin/bsh/bin/tcsh/bin/tcsh/bin/csh/bin/csh

Page 7: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 77

6.1(4) Cambio el 6.1(4) Cambio el llogin ogin sshellhell

Para cambiar el login shell, usamos el comando "chsh". Para cambiar el login shell, usamos el comando "chsh".

[usr001[usr001@linuxpc@linuxpc usr001]$ chshusr001]$ chshCambiando intCambiando intéérprete de rprete de óórdenes para usr001.rdenes para usr001.Password:Password:Nuevo intNuevo intéérprete de rprete de óórdenes [/bin/bash]: /bin/cshrdenes [/bin/bash]: /bin/cshSe ha cambiado el intSe ha cambiado el intéérprete de rprete de óórdenes.rdenes.[usr001[usr001@linuxpc@linuxpc usr001]$ cat /etc/passwdusr001]$ cat /etc/passwdroot:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bash

(omisi(omisióón)n)

usr000:x:500:500::/home/usr000:/bin/bashusr000:x:500:500::/home/usr000:/bin/bashusr001:x:501:501::/home/usr001:/bin/cshusr001:x:501:501::/home/usr001:/bin/cshusr002:x:502:502::/home/usr002:/bin/bashusr002:x:502:502::/home/usr002:/bin/bash

(omisi(omisióón)n)

cambiar el login shell.cambiar el login shell.(2(288) chsh) chsh

Si no hay una razSi no hay una razóónn especial, vamos a usar BASH.especial, vamos a usar BASH.

Page 8: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 88

66.2.2 Caracteres para completar nombres del ficherosCaracteres para completar nombres del ficheros

(1) (1) El carEl caráácter comodcter comodíín n ““**””•• El asterisco El asterisco ““**”” es el cares el caráácter comodcter comodíín, significa n, significa

cualquiera y todos los caracteres.cualquiera y todos los caracteres.•• Por ejemplo, Por ejemplo, ““a*a*”” significa todos los ficheros que significa todos los ficheros que

comiencen con una a.comiencen con una a.[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ lsabxx.txt abyy xx.txt xxyyzzabxx.txt abyy xx.txt xxyyzz[usr001[usr001@linuxpc@linuxpc usr001]$ ls a*usr001]$ ls a*abxx.txt abyyabxx.txt abyy[usr001[usr001@linuxpc@linuxpc usr001]$ ls *.txtusr001]$ ls *.txtabxx.txt xx.txtabxx.txt xx.txt[usr001[usr001@linuxpc@linuxpc usr001]$ ls *yy*usr001]$ ls *yy*abyy xxyyzzabyy xxyyzz[usr001[usr001@linuxpc@linuxpc usr001]$ ls *usr001]$ ls *abxx.txt abyy xx.txt xxyyzzabxx.txt abyy xx.txt xxyyzz[usr001[usr001@linuxpc@linuxpc usr001]$ ls b*usr001]$ ls b*ls: b*: No existe el fichero o el directoriols: b*: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ rm *usr001]$ rm *[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ ls

Page 9: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 99

66.2(2).2(2) El carEl caráácter comodcter comodíín n ““??””

•• El signo interrogaciEl signo interrogacióón n ““??”” es el cares el caráácter comodcter comodíín, n, significa un solo carsignifica un solo caráácter cualquier.cter cualquier.

[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ lsa1 a2 a3 b1 b2 c1 da1 a2 a3 b1 b2 c1 d[usr001[usr001@linuxpc@linuxpc usr001]$ ls a?usr001]$ ls a?a1 a2 a3a1 a2 a3[usr001[usr001@linuxpc@linuxpc usr001]$ ls usr001]$ ls ??11a1 b1 c1a1 b1 c1[usr001[usr001@linuxpc@linuxpc usr001]$ ls ??usr001]$ ls ??a1 a2 a3 b1 b2 c1a1 a2 a3 b1 b2 c1[usr001[usr001@linuxpc@linuxpc usr001]$ ls ?usr001]$ ls ?dd

Page 10: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1010

66.2(.2(33)) LaLa expresiexpresióónn ““[ ][ ]””

•• La expresiLa expresióón n ““[ ][ ]”” (corchetes) significa un car(corchetes) significa un caráácter cter simple si encierra entre corchetes una serie de simple si encierra entre corchetes una serie de caracteres.caracteres.[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ lsa1 a2 a3 a4 a5 b1 c1 d1 e1 x1 y1 z1a1 a2 a3 a4 a5 b1 c1 d1 e1 x1 y1 z1[usr001[usr001@linuxpc@linuxpc usr001]$ ls a[2usr001]$ ls a[2--4]4]a2 a3 a4a2 a3 a4[usr001[usr001@linuxpc@linuxpc usr001]$ ls [ausr001]$ ls [a--z]1z]1a1 b1 c1 d1 e1 x1 y1 z1a1 b1 c1 d1 e1 x1 y1 z1[usr001[usr001@linuxpc@linuxpc usr001]$ ls [ace][135]usr001]$ ls [ace][135]a1 a3 a5 c1 e1a1 a3 a5 c1 e1[usr001[usr001@linuxpc@linuxpc usr001]$ ls [ausr001]$ ls [a--c,xz]?c,xz]?a1 a2 a3 a4 a5 b1 c1 x1 z1a1 a2 a3 a4 a5 b1 c1 x1 z1

Page 11: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1111

66..3 3 TuberTuberíías y redireccionamientos de entrada y as y redireccionamientos de entrada y salidasalida

(1) (1) stdin, stdout, stderrstdin, stdout, stderr

•• Algunos comandos envAlgunos comandos envíían su salida hacia la pantalla.an su salida hacia la pantalla.A la verdad, estos comandos envA la verdad, estos comandos envíían su salida hacia un an su salida hacia un archivo especial llamado "stdout", y el sistema de archivo especial llamado "stdout", y el sistema de LINUX asocia "stdout" con la pantalla. LINUX asocia "stdout" con la pantalla.

cat /etc/passwdcat /etc/passwd pantallapantallasalidasalida std

outstdout

Salida estSalida estáándar (stdout)ndar (stdout)

Page 12: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1212

•• Algunos comandos esperan una entrada desde la Algunos comandos esperan una entrada desde la terminal o el teclado.terminal o el teclado.A la verdad, estos comandos esperan la entrada desde A la verdad, estos comandos esperan la entrada desde un archivo especial llamado un archivo especial llamado ““stdinstdin””, y el sistema de , y el sistema de LINUX asocia "stdin" con el teclado. LINUX asocia "stdin" con el teclado.

cat cat -- pantallapantallaentradaentrada salidasalida std

outstdout

Entrada estEntrada estáándar (stdin)ndar (stdin)

stdin

stdin

tecladoteclado

[usr001[usr001@linuxpc@linuxpc usr001]$ cat usr001]$ cat --abcabcabcabc123123123123xyzxyzxyzxyz

Teclear "Teclear "CntlCntl--d" d" para escapar.para escapar.

Page 13: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1313

•• Algunos comandos envAlgunos comandos envíían un mensaje de error hacia un an un mensaje de error hacia un pantalla.pantalla.A la verdad, estos comandos envA la verdad, estos comandos envíían un mensaje de an un mensaje de error hacia un archivo especial llamado "stderr", y el error hacia un archivo especial llamado "stderr", y el sistema de LINUX asocia "stderr" con la pantalla. sistema de LINUX asocia "stderr" con la pantalla.

comandocomando pantallapantallaerrorerror

Salida de error estSalida de error estáándar (ndar (stdstderr)err)

[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ ls[usr001[usr001@linuxpc@linuxpc usr001]$ cat a > busr001]$ cat a > bcat: a: No existe el fichero o el directoriocat: a: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ lsbb[usr001[usr001@linuxpc@linuxpc usr001]$ cat busr001]$ cat b[usr001[usr001@linuxpc@linuxpc usr001]$usr001]$

stderr

stderr

No existeNo existe

se ha se ha creadocreado

errorerror

vacvacííoo

"stdout" y "stderr" son diferentes."stdout" y "stderr" son diferentes.

Page 14: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1414

6.3(2) 6.3(2) TuberTuberííasas

•• Con tuberCon tuberíías, se puede utilizar la salida de un comando as, se puede utilizar la salida de un comando como entrada de otro.como entrada de otro.

•• El carEl caráácter de tubercter de tuberíía es una barra vertical "a es una barra vertical "|"|"..

cat /etc/passwd /etc/group cat /etc/passwd /etc/group > tmp> tmpmore tmpmore tmp cat /etc/passwd /etc/group cat /etc/passwd /etc/group | more| more

(ejemplo) queremos concatenar 2 archivos "/etc/passwd" y (ejemplo) queremos concatenar 2 archivos "/etc/passwd" y "/etc/group", y verlo con el paginador "more"."/etc/group", y verlo con el paginador "more".

archivo archivo temporaltemporal

si usamos un tubersi usamos un tuberíía ...a ...

comando1comando1entradaentradasalidasalida std

outstdout

stdin

stdin

comando2comando2conectar

tubería

•• Una tuberUna tuberíía conecta el "stdout" de un comando hacia el a conecta el "stdout" de un comando hacia el "stdin" de otro."stdin" de otro.

Page 15: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1515

Los comandos Los comandos ““moremore””, , ““lessless””, , ““grepgrep””, , ““sortsort”” se utilizan se utilizan frecuentemente con las tuberfrecuentemente con las tuberíías.as.

buscar patrones que se encuentren en buscar patrones que se encuentren en archivos e informa darchivos e informa dóónde localiza esos nde localiza esos patrones.patrones.(ej.) grep exp(ej.) grep exp--reg arch1 [arch2 ...]reg arch1 [arch2 ...]

(2(299) grep) grep

[usr000@linuxpc usr000]$ cat /etc/passwd | grep usr00[usr000@linuxpc usr000]$ cat /etc/passwd | grep usr00usr000:x:500:500::/home/usr000:/bin/bashusr000:x:500:500::/home/usr000:/bin/bashusr001:x:501:501::/home/usr001:/bin/bashusr001:x:501:501::/home/usr001:/bin/bashusr002:x:502:502::/home/usr002:/bin/bashusr002:x:502:502::/home/usr002:/bin/bashusr003:x:503:503::/home/usr003:/bin/bashusr003:x:503:503::/home/usr003:/bin/bashusr004:x:504:504::/home/usr004:/bin/bashusr004:x:504:504::/home/usr004:/bin/bashusr005:x:505:505::/home/usr005:/bin/bashusr005:x:505:505::/home/usr005:/bin/bashusr006:x:506:506::/home/usr006:/bin/bashusr006:x:506:506::/home/usr006:/bin/bashusr007:x:507:507::/home/usr007:/bin/bashusr007:x:507:507::/home/usr007:/bin/bashusr008:x:508:508::/home/usr008:/bin/bashusr008:x:508:508::/home/usr008:/bin/bashusr009:x:509:509::/home/usr009:/bin/bashusr009:x:509:509::/home/usr009:/bin/bash

= = ““grep usr00 grep usr00 /etc/passwd/etc/passwd””

sale los lsale los lííneasneas que contienen que contienen ““usr00usr00””

Page 16: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1616

[usr001[usr001@linuxpc@linuxpc usr001]$ ls usr001]$ ls --i1i1400941 a400941 a400940 abc400940 abc400936 bc400936 bc400942 defg400942 defg400937 xyz400937 xyz[usr001[usr001@linuxpc@linuxpc usr001]$ ls usr001]$ ls --i1 | sorti1 | sort400936 bc400936 bc400937 xyz400937 xyz400940 abc400940 abc400941 a400941 a400942 defg400942 defg[usr001[usr001@linuxpc@linuxpc usr001]$ ls usr001]$ ls --i1 | sort i1 | sort --rr400942 defg400942 defg400941 a400941 a400940 abc400940 abc400937 xyz400937 xyz400936 bc400936 bc[usr001[usr001@linuxpc@linuxpc usr001]$ ls usr001]$ ls --i1 | sort i1 | sort --r +1r +1400937 xyz400937 xyz400942 defg400942 defg400936 bc400936 bc400940 abc400940 abc400941 a400941 a

Para la salida en Para la salida en una sola columnauna sola columna

usando primer campousando primer campo

descendentementedescendentemente

usando segundo campousando segundo campo

ordenar archivos de texto.ordenar archivos de texto.(ej.) sort arch1 [arch2 ...](ej.) sort arch1 [arch2 ...]

(30) sort(30) sort

Page 17: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1717

6.3(6.3(33) ) RedireccionamientosRedireccionamientos

•• Se emplea para redireccionar la salida de un comando Se emplea para redireccionar la salida de un comando hacia un archivo. En vez de que la salida vaya a la hacia un archivo. En vez de que la salida vaya a la pantalla de la terminal, se coloca en un archivo.pantalla de la terminal, se coloca en un archivo.

•• Los sLos síímbolos de redireccionamiento de salida son mbolos de redireccionamiento de salida son ““>>””, , ““>>>>””, , ““2>2>””, , ““2>>2>>””, , ““&>&>””..

Redireccionamiento de salidaRedireccionamiento de salida

[usr001@linuxpc usr001]$ date[usr001@linuxpc usr001]$ datejue sep 16 20:08:37 ECT 2004jue sep 16 20:08:37 ECT 2004[usr001@linuxpc usr001]$ date > arch1[usr001@linuxpc usr001]$ date > arch1[usr001@linuxpc usr001]$ cat arch1[usr001@linuxpc usr001]$ cat arch1jue sep 16 20:08:42 ECT 2004jue sep 16 20:08:42 ECT 2004

Page 18: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1818

comandocomando

salidasalida

stdout

stdout

archivo

archivo

“>”, “>>”

•• El redireccionamiento de salida conecta el "stdout" o El redireccionamiento de salida conecta el "stdout" o ““stderrstderr”” de un comando hacia un archivo.de un comando hacia un archivo.

stderr

stderr

archivo

archivo

“2>”, “2>>”

archivo

archivo

“&>”

mensaje mensaje de errorde error

“2>&1” “1>&2”

Page 19: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 1919

Diferencia entre “>” y “>>” (“2>” y “2>>”)

•• Si el archivo no existe, son iguales.Si el archivo no existe, son iguales.•• Si estSi estáá el archivo, el archivo, ““>>”” sobrescribe el archivo, sobrescribe el archivo, ““>>>>”” agregar al agregar al

archivo. archivo. [usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ ls[usr001[usr001@linuxpc@linuxpc usr001]$ usr001]$ whoamiwhoami > arch1> arch1[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1usr001]$ cat arch1usr001usr001[usr001[usr001@linuxpc@linuxpc usr001]$ date > arch1usr001]$ date > arch1[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1usr001]$ cat arch1juejue sep 16 22:06:45 ECT 2004sep 16 22:06:45 ECT 2004[usr001[usr001@linuxpc@linuxpc usr001]$ usr001]$ whoamiwhoami >> arch1>> arch1[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1usr001]$ cat arch1juejue sep 16 22:06:45 ECT 2004sep 16 22:06:45 ECT 2004usr001usr001

se ha sobrescritose ha sobrescrito

no existenteno existente

ya existenteya existente

se ha ase ha aññadidoadido

Presenta su nombre de usuario.Presenta su nombre de usuario.(31) (31) whoamiwhoami

Page 20: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2020

“>” y “2>”, “&>”

[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ lsarch1arch1[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1usr001]$ cat arch1juejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2usr001]$ cat arch1 arch2juejue sep 16 22:18:33 ECT 2004sep 16 22:18:33 ECT 2004cat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2 >a 2>busr001]$ cat arch1 arch2 >a 2>b[usr001[usr001@linuxpc@linuxpc usr001]$ cat ausr001]$ cat ajuejue sep 16 22:18:33 ECT 2004sep 16 22:18:33 ECT 2004[usr001[usr001@linuxpc@linuxpc usr001]$ cat busr001]$ cat bcat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2 &>cusr001]$ cat arch1 arch2 &>c[usr001[usr001@linuxpc@linuxpc usr001]$ cat cusr001]$ cat cjuejue sep 16 22:18:33 ECT 2004sep 16 22:18:33 ECT 2004cat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directorio

salida de salida de ““stdoutstdout””salida de salida de ““stderrstderr””

no existenteno existenteexistenteexistente

Page 21: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2121

“2>&1” (“1>&2”)

[usr001[usr001@linuxpc@linuxpc usr001]$ lsusr001]$ lsarch1arch1[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1usr001]$ cat arch1juejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2usr001]$ cat arch1 arch2juejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004cat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2 2>&1 | sortusr001]$ cat arch1 arch2 2>&1 | sortcat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directoriojuejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2 >a 2>&1usr001]$ cat arch1 arch2 >a 2>&1[usr001[usr001@linuxpc@linuxpc usr001]$ cat ausr001]$ cat ajuejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004cat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2 >>a 2>&1usr001]$ cat arch1 arch2 >>a 2>&1[usr001[usr001@linuxpc@linuxpc usr001]$ cat ausr001]$ cat ajuejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004cat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directoriojuejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004cat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ cat arch1 arch2 2>&1 >ausr001]$ cat arch1 arch2 2>&1 >acat: arch2: No existe el fichero o el directoriocat: arch2: No existe el fichero o el directorio[usr001[usr001@linuxpc@linuxpc usr001]$ cat ausr001]$ cat ajuejue sep 16 22:30:52 ECT 2004sep 16 22:30:52 ECT 2004

no existenteno existenteexistenteexistente

salida de salida de ““stdoutstdout””salida de salida de ““stderrstderr””

= = ““&>&>””

orden es orden es importanteimportante

““2>&12>&1”” no no funcionafunciona

Page 22: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2222

•• Se usa para redireccionar la entrada en un comando a Se usa para redireccionar la entrada en un comando a fin de que provenga de un archivo y no de la terminal.fin de que provenga de un archivo y no de la terminal.

•• Los sLos síímbolos de redireccionamiento de entrada son mbolos de redireccionamiento de entrada son ““<<””..•• El sEl síímbolo mbolo ““<<”” conecta el "stdinconecta el "stdin”” de un comando con de un comando con

un archivo.un archivo.

Redireccionamiento de entradaRedireccionamiento de entrada

entradaentradaarchivo

archivo

stdin

stdin

comandocomandoconectar

<

[usr001[usr001@linuxpc@linuxpc usr001]$ grep usr000 < /etc/passwdusr001]$ grep usr000 < /etc/passwdusr000:x:500:500::/home/usr000:/bin/bashusr000:x:500:500::/home/usr000:/bin/bash[usr001[usr001@linuxpc@linuxpc usr001]$ cat /etc/passwd | grep usr000usr001]$ cat /etc/passwd | grep usr000usr000:x:500:500::/home/usr000:/bin/bashusr000:x:500:500::/home/usr000:/bin/bash[usr001[usr001@linuxpc@linuxpc usr001]$ grep usr000 /etc/passwdusr001]$ grep usr000 /etc/passwdusr000:x:500:500::/home/usr000:/bin/bashusr000:x:500:500::/home/usr000:/bin/bash

los los resultados resultados son son iguales.iguales.

los los resultados resultados son son iguales.iguales.

los los resultados resultados son son iguales.iguales.

Page 23: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2323

6.4 6.4 SustitucionesSustituciones

•• Los variables son disponibles en el shell.Los variables son disponibles en el shell.•• Algunos variables se definen por el shell o el sistema Algunos variables se definen por el shell o el sistema

de LINUX.de LINUX.

Nombre de su shell actual.Nombre de su shell actual.SHELLSHELL

Nombre de ruta de acceso completo del directorio de trabajo Nombre de ruta de acceso completo del directorio de trabajo actual.actual.

PWDPWD

Tipo de terminal que utiliza usted.Tipo de terminal que utiliza usted.TERMTERM

Principal indicador del shell.Principal indicador del shell.PS1PS1

Directorios en los que el shell busca comandos.Directorios en los que el shell busca comandos.PATHPATH

Su nombre de usuario.Su nombre de usuario.LOGNAMELOGNAME

Nombre de ruta de acceso completo de su directorio base.Nombre de ruta de acceso completo de su directorio base.HOMEHOME

Variables principales disponibles en el shell Variables principales disponibles en el shell

(1) (1) SustituciSustitucióón de variablesn de variables

Page 24: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2424

•• Con el carCon el caráácter cter ““$$””, podemos sustituir el nombre de un , podemos sustituir el nombre de un variable con su valor.variable con su valor.

[usr000[usr000@linuxpc@linuxpc usr000]$ echo usr000]$ echo $HOME$HOME/home/usr000/home/usr000[usr000[usr000@linuxpc@linuxpc usr000]$ ls usr000]$ ls --la la $HOME$HOMEtotal 28total 28drwxdrwx------------ 2 usr000 2 usr000 usr000usr000 4096 sep 17 12:37 .4096 sep 17 12:37 .drwxrdrwxr--xrxr--x 15 root x 15 root rootroot 4096 sep 15 23:46 ..4096 sep 15 23:46 ..--rwrw-------------- 1 usr000 1 usr000 usr000usr000 1332 sep 17 12:28 .1332 sep 17 12:28 .bash_historybash_history--rwrw--rr----rr---- 1 usr000 1 usr000 usr000usr000 24 sep 15 23:39 .24 sep 15 23:39 .bash_logoutbash_logout--rwrw--rr----rr---- 1 usr000 1 usr000 usr000usr000 191 sep 15 23:39 .191 sep 15 23:39 .bash_profilebash_profile--rwrw--rr----rr---- 1 usr000 1 usr000 usr000usr000 124 sep 15 23:39 .124 sep 15 23:39 .bashrcbashrc--rwrw--rr----rr---- 1 usr000 1 usr000 usr000usr000 120 sep 15 23:39 .120 sep 15 23:39 .gtkrcgtkrc[usr000@linuxpc usr000]$ cd $HOME[usr000@linuxpc usr000]$ cd $HOME

echo /home/usr000echo /home/usr000sustituirsustituir

cambia el directorio de trabajo cambia el directorio de trabajo actual a su directorio base.actual a su directorio base.

= = ““cdcd””= = ““cd ~cd ~””

Toma el argumento que se le pasa y lo Toma el argumento que se le pasa y lo escribe a la salida estescribe a la salida estáándar.ndar.

(32) echo(32) echo

Page 25: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2525

6.4(6.4(22) ) SustituciSustitucióón de comandosn de comandos

•• La sustituciLa sustitucióón de comandos sustituye el resultado de un n de comandos sustituye el resultado de un comando por un parcomando por un paráámetro de posicimetro de posicióón.n.

•• Para sustituir un comando, ponemos el comando entre Para sustituir un comando, ponemos el comando entre dos dos ““`̀”” (acentos graves).(acentos graves).

[usr001[usr001@linuxpc@linuxpc usr001]$ usr001]$ whoamiwhoamiusr001usr001[usr001[usr001@linuxpc@linuxpc usr001]$ echo `usr001]$ echo `whoamiwhoami`̀usr001usr001[usr001[usr001@linuxpc@linuxpc usr001]$ grep `usr001]$ grep `whoamiwhoami` /etc/passwd` /etc/passwdusr001:x:501:501::/home/usr001:/bin/bashusr001:x:501:501::/home/usr001:/bin/bash

= = ““echo usr001echo usr001””

= = ““grep usr001 grep usr001 /etc/passwd/etc/passwd””

` comando `` comando `

Page 26: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2626

6.5 6.5 Comillas y apComillas y apóóstrofosstrofos(1) Comillas " "(1) Comillas " "•• Las comillas " " desactivan los caracteres especiales, Las comillas " " desactivan los caracteres especiales, ““**””, , ““??””, , ““[[””, ,

““]]””, , ““>>””, , ““<<””, ..., ...•• Sin embargo, la sustituciSin embargo, la sustitucióón de variables n de variables ““$$”” y comandos ` ` ay comandos ` ` aúún n

se lleva a afecto.se lleva a afecto.

[usr000[usr000@linuxpc@linuxpc usr000]$ lsusr000]$ lsaa[usr000[usr000@linuxpc@linuxpc usr000]$ ls *usr000]$ ls *aa[usr000[usr000@linuxpc@linuxpc usr000]$ ls "*"usr000]$ ls "*"ls: *: No existe el fichero o el directoriols: *: No existe el fichero o el directorio[usr000[usr000@linuxpc@linuxpc usr000]$ date > " "usr000]$ date > " "[usr000[usr000@linuxpc@linuxpc usr000]$ ls usr000]$ ls --lltotal 4total 4--rwrw--rwrw--rr---- 1 usr000 1 usr000 usr000usr000 29 sep 17 09:4729 sep 17 09:47--rwrw--rwrw--rr---- 1 usr000 1 usr000 usr000usr000 0 sep 17 09:46 a0 sep 17 09:46 a[usr000[usr000@linuxpc@linuxpc usr000]$ cat " "usr000]$ cat " "vievie sep 17 09:47:08 ECT 2004sep 17 09:47:08 ECT 2004[usr000[usr000@linuxpc@linuxpc usr000]$ rm " "usr000]$ rm " "[usr000[usr000@linuxpc@linuxpc usr000]$usr000]$

un nombre de archivoun nombre de archivo

el carel caráácter comodcter comodíínn

un archivo del un archivo del que nombre es que nombre es un espacio.un espacio.

un archivo un archivo existe.existe.

Page 27: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2727

[usr000[usr000@linuxpc@linuxpc usr000]$ echo usr000]$ echo $HOME$HOME/home/usr000/home/usr000[usr000[usr000@linuxpc@linuxpc usr000]$ echo "usr000]$ echo "$HOME$HOME""/home/usr000/home/usr000[usr000[usr000@linuxpc@linuxpc usr000]$ echo "usr000]$ echo "\\$HOME$HOME""$HOME$HOME[usr000[usr000@linuxpc@linuxpc usr000]$ echo `usr000]$ echo `whoamiwhoami`̀usr000usr000[usr000[usr000@linuxpc@linuxpc usr000]$ echo "`usr000]$ echo "`whoamiwhoami`"`"usr000usr000[usr000[usr000@linuxpc@linuxpc usr000]$ echo "usr000]$ echo "\\`̀whoamiwhoami\\`"`"`̀whoamiwhoami`̀

sustitucisustitucióón de variablesn de variables

para desactivar para desactivar la sustitucila sustitucióón, n, ""\\" es necesario." es necesario.

sustitucisustitucióón de n de comandoscomandos

para desactivar para desactivar la sustitucila sustitucióón, n, ""\\" es necesario." es necesario.

Page 28: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2828

(2) Ap(2) Apóóstrofos ' 'strofos ' '

•• Los apLos apóóstrofos ' ' desactivan todo el anstrofos ' ' desactivan todo el anáálisis sintlisis sintááctico de shell.ctico de shell.

[usr000[usr000@linuxpc@linuxpc usr000]$ lsusr000]$ lsaa[usr000[usr000@linuxpc@linuxpc usr000]$ ls ?usr000]$ ls ?aa[usr000[usr000@linuxpc@linuxpc usr000]$ ls '?'usr000]$ ls '?'ls: ?: No existe el fichero o el directoriols: ?: No existe el fichero o el directorio[usr000[usr000@linuxpc@linuxpc usr000]$ echo usr000]$ echo $HOME$HOME/home/usr000/home/usr000[usr000[usr000@linuxpc@linuxpc usr000]$ echo 'usr000]$ echo '$HOME$HOME''$HOME$HOME[usr000[usr000@linuxpc@linuxpc usr000]$ echo `usr000]$ echo `whoamiwhoami`̀usr000usr000[usr000[usr000@linuxpc@linuxpc usr000]$ echo '`usr000]$ echo '`whoamiwhoami`'`'`̀whoamiwhoami`̀

un nombre de archivoun nombre de archivo

el carel caráácter comodcter comodíínn

sustitucisustitucióón de variablesn de variables

se ha desactivado se ha desactivado la sustitucila sustitucióón.n.

sustitucisustitucióón de n de comandoscomandos

se ha desactivado se ha desactivado la sustitucila sustitucióón.n.

Page 29: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 2929

6.6 6.6 Grupos de comandosGrupos de comandos

•• Un comando simple se concluye con un Un comando simple se concluye con un ““EnterEnter””..•• Si quiere colocar mSi quiere colocar múúltiples comandos en una lltiples comandos en una líínea de comando nea de comando

antes de presionar antes de presionar ““EnterEnter””, puede delimitar comandos individuales , puede delimitar comandos individuales con un signo de punto y coma con un signo de punto y coma ““;;””..

•• El shell ejecuta cada comando en secuencia, como si usted hubierEl shell ejecuta cada comando en secuencia, como si usted hubiera a escrito cada uno de ellos de forma independiente en una lescrito cada uno de ellos de forma independiente en una líínea. nea.

[usr000[usr000@linuxpc@linuxpc usr000]$ usr000]$ whoamiwhoami ; date ; cal; date ; calusr000usr000vievie sep 17 10:43:44 ECT 2004sep 17 10:43:44 ECT 2004septiembre de 2004septiembre de 2004do do lulu mama mi mi juju vi vi ssáá

1 2 3 41 2 3 45 6 7 8 9 10 115 6 7 8 9 10 1112 13 14 15 16 17 1812 13 14 15 16 17 1819 20 21 22 23 24 2519 20 21 22 23 24 2526 27 28 29 3026 27 28 29 30

comando1 ; comando2 ; comando3comando1 ; comando2 ; comando3

(1) Secuencia de comandos (punto y coma (1) Secuencia de comandos (punto y coma ““;;””))

Page 30: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 3030

6.6(6.6(2)2) Grupos de comandosGrupos de comandosLlaves { }Llaves { }

•• Si quiere redireccionar la entrada o la salida hacia todos los Si quiere redireccionar la entrada o la salida hacia todos los comandos como un grupo, puede hacerlo al convertir la lcomandos como un grupo, puede hacerlo al convertir la líínea de nea de comando en un grupo de comandos.comando en un grupo de comandos.

•• Un grupo de comandos son varios comandos encerrados entre Un grupo de comandos son varios comandos encerrados entre llaves { }.llaves { }.

[usr000[usr000@linuxpc@linuxpc usr000]$ { usr000]$ { whoamiwhoami; date; } > a; date; } > a[usr000[usr000@linuxpc@linuxpc usr000]$ cat ausr000]$ cat ausr000usr000vievie sep 17 11:08:30 ECT 2004sep 17 11:08:30 ECT 2004[usr000[usr000@linuxpc@linuxpc usr000]$ { usr000]$ { whoamiwhoami; date; } | sort ; date; } | sort --rrvievie sep 17 11:09:23 ECT 2004sep 17 11:09:23 ECT 2004usr000usr000

{ { comando1; comando2comando1; comando2; } > archivo; } > archivo

{ { comando1; comando2comando1; comando2; } | archivo; } | archivoun espacio es un espacio es necesario.necesario.

punto y coma es necesario.punto y coma es necesario.

Page 31: Linux basico-6.PDF

LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 3131

¡¡ Muchas gracias por su atenciMuchas gracias por su atencióón !n !¡¡ Hasta pronto !Hasta pronto !

En la próxima hora, vamos a aprender sobre el control de procesos.