Académique Documents
Professionnel Documents
Culture Documents
TAKASHI SUGASAWA
LINUX Bsico
6. Shells(1) ndice
6.1 Comprensin de shells 6.2 Caracteres para completar nombres del ficheros 6.3 Tuberas y redireccionamientos de entrada y salida 6.4 Sustituciones 6.5 Comillas y apstrofos 6.6 Grupos de comandos
LINUX Bsico (6. Shells(1)) 3
El shell ms antiguo. El shell original de UNIX. Est disponible en todos los sistemas de UNIX. El shell antiguo y muy comn tambin. Est disponible en casi todos los sistemas de UNIX. La sintaxis del shell C es muy parecida al lenguaje de programacin C. El shell derivado de Shell Bourne. Proporciona varias caractersticas mejoradas. El shell por omisin de LINUX El shell derivado de Shell C. Proporciona varias caractersticas mejoradas.
[usr001@linuxpc usr001]$ chsh Cambiando intrprete de rdenes para usr001. Password: Nuevo intrprete de rdenes [/bin/bash]: /bin/csh Se ha cambiado el intrprete de rdenes. [usr001@linuxpc usr001]$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash (omisin) usr000:x:500:500::/home/usr000:/bin/bash usr001:x:501:501::/home/usr001:/bin/csh usr002:x:502:502::/home/usr002:/bin/bash
(omisin)
6.2 Caracteres para completar nombres del ficheros (1) El carcter comodn * El asterisco * es el carcter comodn, significa
cualquiera y todos los caracteres. Por ejemplo, a* significa todos los ficheros que comiencen con una a.
[usr001@linuxpc usr001]$ ls abxx.txt abyy xx.txt xxyyzz [usr001@linuxpc usr001]$ ls a* abxx.txt abyy [usr001@linuxpc usr001]$ ls *.txt abxx.txt xx.txt [usr001@linuxpc usr001]$ ls *yy* abyy xxyyzz [usr001@linuxpc usr001]$ ls * abxx.txt abyy xx.txt xxyyzz [usr001@linuxpc usr001]$ ls b* ls: b*: No existe el fichero o el directorio [usr001@linuxpc usr001]$ rm * [usr001@linuxpc usr001]$ ls
LINUX Bsico (6. Shells(1)) 8
6.2(3) La expresin [ ]
z1
10
A la verdad, estos comandos envan su salida hacia un archivo especial llamado "stdout", y el sistema de LINUX asocia "stdout" con la pantalla.
cat /etc/passwd salida std std out out pantalla
11
terminal o el teclado. A la verdad, estos comandos esperan la entrada desde un archivo especial llamado stdin, y el sistema de LINUX asocia "stdin" con el teclado.
std std in in entrada cat salida std std out out pantalla
teclado
[usr001@linuxpc usr001]$ cat abc abc 123 123 xyz xyz Teclear "Cntl-d" para escapar.
LINUX Bsico (6. Shells(1)) 12
se ha creado
6.3(2) Tuberas
tubera
conectar std std in in
entrada
comando2
14
Los comandos more, less, grep, sort se utilizan frecuentemente con las tuberas. (29) grep buscar patrones que se encuentren en archivos e informa dnde localiza esos patrones. (ej.) grep exp-reg arch1 [arch2 ...]
sale los lneas que contienen usr00 [usr000@linuxpc usr000]$ cat /etc/passwd | grep usr00 usr000:x:500:500::/home/usr000:/bin/bash usr001:x:501:501::/home/usr001:/bin/bash = grep usr00 usr002:x:502:502::/home/usr002:/bin/bash /etc/passwd usr003:x:503:503::/home/usr003:/bin/bash usr004:x:504:504::/home/usr004:/bin/bash usr005:x:505:505::/home/usr005:/bin/bash usr006:x:506:506::/home/usr006:/bin/bash usr007:x:507:507::/home/usr007:/bin/bash usr008:x:508:508::/home/usr008:/bin/bash usr009:x:509:509::/home/usr009:/bin/bash
LINUX Bsico (6. Shells(1)) 15
(30) sort
[usr001@linuxpc 400941 a 400940 abc 400936 bc 400942 defg 400937 xyz [usr001@linuxpc 400936 bc 400937 xyz 400940 abc 400941 a 400942 defg [usr001@linuxpc 400942 defg 400941 a 400940 abc 400937 xyz 400936 bc [usr001@linuxpc 400937 xyz 400942 defg 400936 bc 400940 abc 400941 a
usando primer campo usr001]$ ls -i1 | sort descendentemente usr001]$ ls -i1 | sort -r usando segundo campo usr001]$ ls -i1 | sort -r +1
16
6.3(3) Redireccionamientos
Redireccionamiento de salida
17
2>, 2>>
18
Si el archivo no existe, son iguales. Si est el archivo, > sobrescribe el archivo, >> agregar al archivo.
no existente [usr001@linuxpc usr001]$ ls [usr001@linuxpc usr001]$ whoami > arch1 [usr001@linuxpc usr001]$ cat arch1 ya existente usr001 [usr001@linuxpc usr001]$ date > arch1 [usr001@linuxpc usr001]$ cat arch1 se ha sobrescrito jue sep 16 22:06:45 ECT 2004 [usr001@linuxpc usr001]$ whoami >> arch1 [usr001@linuxpc usr001]$ cat arch1 jue sep 16 22:06:45 ECT 2004 se ha aadido usr001
20
2>&1 (1>&2)
[usr001@linuxpc usr001]$ ls arch1 [usr001@linuxpc usr001]$ cat arch1 jue sep 16 22:30:52 ECT 2004 [usr001@linuxpc usr001]$ cat arch1 jue sep 16 22:30:52 ECT 2004 cat: arch2: No existe el fichero o [usr001@linuxpc usr001]$ cat arch1 cat: arch2: No existe el fichero o jue sep 16 22:30:52 ECT 2004 [usr001@linuxpc usr001]$ cat arch1 [usr001@linuxpc usr001]$ cat a jue sep 16 22:30:52 ECT 2004 cat: arch2: No existe el fichero o [usr001@linuxpc usr001]$ cat arch1 [usr001@linuxpc usr001]$ cat a jue sep 16 22:30:52 ECT 2004 cat: arch2: No existe el fichero o jue sep 16 22:30:52 ECT 2004 cat: arch2: No existe el fichero o [usr001@linuxpc usr001]$ cat arch1 cat: arch2: No existe el fichero o [usr001@linuxpc usr001]$ cat a jue sep 16 22:30:52 ECT 2004
existente arch2 no existente el directorio salida de arch2 2>&1 | sort stderr el directorio arch2 >a 2>&1 el directorio arch2 >>a 2>&1 el directorio el directorio arch2 2>&1 >a el directorio 2>&1 no funciona = &>
salida de stdout
orden es importante
21
Redireccionamiento de entrada
fin de que provenga de un archivo y no de la terminal. Los smbolos de redireccionamiento de entrada son <. El smbolo < conecta el "stdin de un comando con un archivo.
arch arch ivo ivo
<
conectar std std in in
entrada
comando
[usr001@linuxpc usr001]$ grep usr000 < /etc/passwd usr000:x:500:500::/home/usr000:/bin/bash [usr001@linuxpc usr001]$ cat /etc/passwd | grep usr000 usr000:x:500:500::/home/usr000:/bin/bash [usr001@linuxpc usr001]$ grep usr000 /etc/passwd usr000:x:500:500::/home/usr000:/bin/bash
LINUX Bsico (6. Shells(1))
22
6.4 Sustituciones
Los variables son disponibles en el shell. Algunos variables se definen por el shell o el sistema
de LINUX.
Variables principales disponibles en el shell HOME LOGNAME PATH PS1 PWD SHELL TERM Nombre de ruta de acceso completo de su directorio base. Su nombre de usuario. Directorios en los que el shell busca comandos. Principal indicador del shell. Nombre de ruta de acceso completo del directorio de trabajo actual. Nombre de su shell actual. Tipo de terminal que utiliza usted.
LINUX Bsico (6. Shells(1)) 23
(32) echo
[usr001@linuxpc usr001]$ whoami usr001 [usr001@linuxpc usr001]$ echo `whoami` = echo usr001 usr001 [usr001@linuxpc usr001]$ grep `whoami` /etc/passwd usr001:x:501:501::/home/usr001:/bin/bash = grep usr001 /etc/passwd
25
[usr000@linuxpc usr000]$ ls el carcter comodn a [usr000@linuxpc usr000]$ ls * un nombre de archivo a [usr000@linuxpc usr000]$ ls "*" ls: *: No existe el fichero o el directorio [usr000@linuxpc usr000]$ date > " " un archivo del un archivo que nombre es [usr000@linuxpc usr000]$ ls -l existe. un espacio. total 4 -rw-rw-r-1 usr000 usr000 29 sep 17 09:47 -rw-rw-r-1 usr000 usr000 0 sep 17 09:46 a [usr000@linuxpc usr000]$ cat " " vie sep 17 09:47:08 ECT 2004 [usr000@linuxpc usr000]$ rm " " [usr000@linuxpc usr000]$
26
sustitucin de variables [usr000@linuxpc /home/usr000 [usr000@linuxpc /home/usr000 [usr000@linuxpc $HOME [usr000@linuxpc usr000 [usr000@linuxpc usr000 [usr000@linuxpc `whoami` usr000]$ echo $HOME usr000]$ echo "$HOME" usr000]$ echo "\$HOME" usr000]$ echo `whoami` usr000]$ echo "`whoami`" usr000]$ echo "\`whoami\`" para desactivar la sustitucin, "\" es necesario. para desactivar la sustitucin, "\" es necesario. sustitucin de comandos
27
(2) Apstrofos ' ' Los apstrofos ' ' desactivan todo el anlisis sintctico de shell.
[usr000@linuxpc usr000]$ ls el carcter comodn a [usr000@linuxpc usr000]$ ls ? un nombre de archivo a [usr000@linuxpc usr000]$ ls '?' ls: ?: No existe el fichero o el directorio [usr000@linuxpc usr000]$ echo $HOME sustitucin de variables /home/usr000 [usr000@linuxpc usr000]$ echo '$HOME' se ha desactivado $HOME la sustitucin. [usr000@linuxpc usr000]$ echo `whoami` sustitucin de usr000 [usr000@linuxpc usr000]$ echo '`whoami`' comandos `whoami` se ha desactivado la sustitucin.
28
antes de presionar Enter, puede delimitar comandos individuales con un signo de punto y coma ;.
comando1 ; comando2 ; comando3 El shell ejecuta cada comando en secuencia, como si usted hubiera escrito cada uno de ellos de forma independiente en una lnea.
[usr000@linuxpc usr000]$ whoami ; date ; cal usr000 vie sep 17 10:43:44 ECT 2004 septiembre de 2004 do lu ma mi ju vi s 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
LINUX Bsico (6. Shells(1)) 29
[usr000@linuxpc usr000]$ { whoami; date; } > a [usr000@linuxpc usr000]$ cat a usr000 vie sep 17 11:08:30 ECT 2004 [usr000@linuxpc usr000]$ { whoami; date; } | sort -r vie sep 17 11:09:23 ECT 2004 usr000
30
31