Upload
uleam
View
851
Download
0
Embed Size (px)
Citation preview
LINUX BLINUX Báásico (6. Shells(1))sico (6. Shells(1)) 11
LINUX BLINUX Báásicosico
TAKASHI SUGASAWA
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
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
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.
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, ...
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
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.
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
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
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
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)
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.
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.
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.
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””
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
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
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”
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
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
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
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.
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
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
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 `
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.
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.
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.
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 ““;;””))
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.
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.