• Like
Linux basico-6.PDF
Upcoming SlideShare
Loading in...5
×

Linux basico-6.PDF

  • 733 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
733
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
42
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. LINUX Básico TAKASHI SUGASAWA LINUX Básico (6. Shells(1)) 1
  • 2. Programa del curso 1. Introducción a LINUX 2. Operación básica de LINUX 3. Operación de archivos y directorios 4. Editor vi 5. Comprensión del sistema de ficheros 6. Shells(1) 7. Shells(2) 8. Shells(3) 9. Otros comandos LINUX Básico (6. Shells(1)) 2
  • 3. LINUX Básico6. Shells(1) Índice 6.1 Comprensión de shells 6.2 Caracteres para completar nombres del ficheros 6.3 Tuberías y redireccionamientos de entrada y salida 6.4 Sustituciones 6.5 Comillas y apóstrofos 6.6 Grupos de comandos LINUX Básico (6. Shells(1)) 3
  • 4. 6.1 Comprensión de shells(1) ¿Qué es shell? • Shell es una aplicación como "Símbolo del sistema" en el Windows. • Shell empieza automáticamente cuando un usuario se registra. • Shell funciona como interfaz principal entre el sistema operativo y el usuario. • Shell interpreta sus comandos u órdenes. • Shell no es un parte del núcleo del sistema operativo. • Hay múltiples shells instalados (Shell Bourne, BASH, Shell C, tcsh, zsh,...). El shell por omisión de LINUX es bash. LINUX Básico (6. Shells(1)) 4
  • 5. 6.1(2) Variedad de shells Shell Bourne • El shell más antiguo. (/bin/sh) • El shell original de UNIX. • Está disponible en todos los sistemas de UNIX. Shell C • El shell antiguo y muy común también. (/bin/csh) • Está disponible en casi todos los sistemas de UNIX. • La sintaxis del shell C es muy parecida al lenguaje de programación C. BASH • El shell derivado de Shell Bourne. (/bin/bash) • Proporciona varias características mejoradas. • El shell por omisión de LINUX tcsh • El shell derivado de Shell C. (/bin/tcsh) • Proporciona varias características mejoradas. Hay otros, Shell Z, Shell Korn, ... LINUX Básico (6. Shells(1)) 5
  • 6. 6.1(3) Shells disponibles en el sistema Para saber los shells disponibles en el sistema, se referimos el archivo "/etc/shells". [usr001@linuxpc usr001]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/bash2 /bin/ash /bin/bsh /bin/tcsh /bin/csh LINUX Básico (6. Shells(1)) 6
  • 7. 6.1(4) Cambio el login shell Para cambiar el login shell, usamos el comando "chsh".(28) chsh cambiar el login shell. [usr001@linuxpc usr001]$ chsh Cambiando intérprete de órdenes para usr001. Password: Nuevo intérprete de órdenes [/bin/bash]: /bin/csh Se ha cambiado el intérprete de órdenes. [usr001@linuxpc usr001]$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash (omisión) usr000:x:500:500::/home/usr000:/bin/bash usr001:x:501:501::/home/usr001:/bin/csh usr002:x:502:502::/home/usr002:/bin/bash (omisión) Si no hay una razón especial, vamos a usar BASH. LINUX Básico (6. Shells(1)) 7
  • 8. 6.2 Caracteres para completar nombres del ficheros(1) El carácter comodín “*” • El asterisco “*” es el carácter comodín, 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 Básico (6. Shells(1)) 8
  • 9. 6.2(2) El carácter comodín “?” • El signo interrogación “?” es el carácter comodín, significa un solo carácter cualquier. [usr001@linuxpc usr001]$ ls a1 a2 a3 b1 b2 c1 d [usr001@linuxpc usr001]$ ls a? a1 a2 a3 [usr001@linuxpc usr001]$ ls ?1 a1 b1 c1 [usr001@linuxpc usr001]$ ls ?? a1 a2 a3 b1 b2 c1 [usr001@linuxpc usr001]$ ls ? d LINUX Básico (6. Shells(1)) 9
  • 10. 6.2(3) La expresión “[ ]” • La expresión “[ ]” (corchetes) significa un carácter simple si encierra entre corchetes una serie de caracteres. [usr001@linuxpc usr001]$ ls a1 a2 a3 a4 a5 b1 c1 d1 e1 x1 y1 z1 [usr001@linuxpc usr001]$ ls a[2-4] a2 a3 a4 [usr001@linuxpc usr001]$ ls [a-z]1 a1 b1 c1 d1 e1 x1 y1 z1 [usr001@linuxpc usr001]$ ls [ace][135] a1 a3 a5 c1 e1 [usr001@linuxpc usr001]$ ls [a-c,xz]? a1 a2 a3 a4 a5 b1 c1 x1 z1 LINUX Básico (6. Shells(1)) 10
  • 11. 6.3 Tuberías y redireccionamientos de entrada y salida(1) stdin, stdout, stderr Salida estándar (stdout) • Algunos comandos envían su salida hacia la pantalla. A la verdad, estos comandos envían su salida hacia un archivo especial llamado "stdout", y el sistema de LINUX asocia "stdout" con la pantalla. salida std cat /etc/passwd std out pantalla out LINUX Básico (6. Shells(1)) 11
  • 12. Entrada estándar (stdin)• Algunos comandos esperan una entrada desde la 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. teclado entrada salida std std std std in cat - out pantalla in out [usr001@linuxpc usr001]$ cat - abc abc 123 123 xyz xyz Teclear "Cntl-d" para escapar. LINUX Básico (6. Shells(1)) 12
  • 13. Salida de error estándar (stderr)• Algunos comandos envían un mensaje de error hacia un pantalla. A la verdad, estos comandos envían un mensaje de error hacia un archivo especial llamado "stderr", y el sistema de LINUX asocia "stderr" con la pantalla. error std std comando err pantalla err No existe [usr001@linuxpc usr001]$ ls [usr001@linuxpc usr001]$ cat a > b error cat: a: No existe el fichero o el directorio [usr001@linuxpc usr001]$ ls b se ha [usr001@linuxpc usr001]$ cat b vacíocreado [usr001@linuxpc usr001]$ "stdout" y "stderr" son diferentes. LINUX Básico (6. Shells(1)) 13
  • 14. 6.3(2) Tuberías• Con tuberías, se puede utilizar la salida de un comando como entrada de otro.• El carácter de tubería es una barra vertical "|". (ejemplo) queremos concatenar 2 archivos "/etc/passwd" y "/etc/group", y verlo con el paginador "more". si usamos un tubería ...cat /etc/passwd /etc/group > tmp cat /etc/passwd /etc/group | moremore tmp archivo temporal• Una tubería conecta el "stdout" de un comando hacia el "stdin" de otro. tubería salida std std entrada comando1 std std comando2 out out conectar in in LINUX Básico (6. Shells(1)) 14
  • 15. Los comandos “more”, “less”, “grep”, “sort” se utilizanfrecuentemente con las tuberías.(29) grep buscar patrones que se encuentren en archivos e informa dónde localiza esos patrones. (ej.) grep exp-reg arch1 [arch2 ...] sale los líneas que contienen “usr00”[usr000@linuxpc usr000]$ cat /etc/passwd | grep usr00usr000:x:500:500::/home/usr000:/bin/bashusr001:x:501:501::/home/usr001:/bin/bash = “grep usr00usr002:x:502:502::/home/usr002:/bin/bash /etc/passwd”usr003:x:503:503::/home/usr003:/bin/bashusr004:x:504:504::/home/usr004:/bin/bashusr005:x:505:505::/home/usr005:/bin/bashusr006:x:506:506::/home/usr006:/bin/bashusr007:x:507:507::/home/usr007:/bin/bashusr008:x:508:508::/home/usr008:/bin/bashusr009:x:509:509::/home/usr009:/bin/bash LINUX Básico (6. Shells(1)) 15
  • 16. (30) sort ordenar archivos de texto. (ej.) sort arch1 [arch2 ...] Para la salida en una sola columna [usr001@linuxpc usr001]$ ls -i1 400941 a 400940 abc 400936 bc 400942 defg usando primer campo 400937 xyz [usr001@linuxpc usr001]$ ls -i1 | sort 400936 bc 400937 xyz 400940 abc 400941 a descendentemente 400942 defg [usr001@linuxpc usr001]$ ls -i1 | sort -r 400942 defg 400941 a 400940 abc 400937 xyz usando segundo campo 400936 bc [usr001@linuxpc usr001]$ ls -i1 | sort -r +1 400937 xyz 400942 defg 400936 bc 400940 abc 400941 a LINUX Básico (6. Shells(1)) 16
  • 17. 6.3(3) Redireccionamientos Redireccionamiento de salida • Se emplea para redireccionar la salida de un comando hacia un archivo. En vez de que la salida vaya a la pantalla de la terminal, se coloca en un archivo. • Los símbolos de redireccionamiento de salida son “>”, “>>”, “2>”, “2>>”, “&>”. [usr001@linuxpc usr001]$ date jue sep 16 20:08:37 ECT 2004 [usr001@linuxpc usr001]$ date > arch1 [usr001@linuxpc usr001]$ cat arch1 jue sep 16 20:08:42 ECT 2004 LINUX Básico (6. Shells(1)) 17
  • 18. • El redireccionamiento de salida conecta el "stdout" o “stderr” de un comando hacia un archivo. std “>”, “>>” arch std arch out out ivo ivo salida “&>” comando arch arch “2>&1” “1>&2” ivo ivo mensaje de error std std arch arch err err ivo ivo “2>”, “2>>” LINUX Básico (6. Shells(1)) 18
  • 19. Diferencia entre “>” y “>>” (“2>” y “2>>”) • Si el archivo no existe, son iguales. • Si está el archivo, “>” sobrescribe el archivo, “>>” agregar al archivo. [usr001@linuxpc usr001]$ ls no existente [usr001@linuxpc usr001]$ whoami > arch1 [usr001@linuxpc usr001]$ cat arch1 usr001 ya existente [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 usr001 se ha añadido(31) whoami Presenta su nombre de usuario. LINUX Básico (6. Shells(1)) 19
  • 20. “>” y “2>”, “&>” [usr001@linuxpc usr001]$ ls arch1 [usr001@linuxpc usr001]$ cat arch1 existente jue sep 16 22:30:52 ECT 2004 [usr001@linuxpc usr001]$ cat arch1 arch2 no existente jue sep 16 22:18:33 ECT 2004 salida de “stdout” cat: arch2: No existe el fichero o el directorio salida de [usr001@linuxpc usr001]$ cat arch1 arch2 >a 2>b “stderr” [usr001@linuxpc usr001]$ cat a jue sep 16 22:18:33 ECT 2004 [usr001@linuxpc usr001]$ cat b cat: arch2: No existe el fichero o el directorio [usr001@linuxpc usr001]$ cat arch1 arch2 &>c [usr001@linuxpc usr001]$ cat c jue sep 16 22:18:33 ECT 2004 cat: arch2: No existe el fichero o el directorio LINUX Básico (6. Shells(1)) 20
  • 21. “2>&1” (“1>&2”) [usr001@linuxpc usr001]$ ls arch1 [usr001@linuxpc usr001]$ cat arch1 existente jue sep 16 22:30:52 ECT 2004 [usr001@linuxpc usr001]$ cat arch1 arch2 no existente jue sep 16 22:30:52 ECT 2004 salida de “stdout” cat: arch2: No existe el fichero o el directorio salida de [usr001@linuxpc usr001]$ cat arch1 arch2 2>&1 | sort “stderr” cat: arch2: No existe el fichero o el directorio jue sep 16 22:30:52 ECT 2004 [usr001@linuxpc usr001]$ cat arch1 arch2 >a 2>&1 = “&>” [usr001@linuxpc usr001]$ cat a jue sep 16 22:30:52 ECT 2004 cat: arch2: No existe el fichero o el directorio [usr001@linuxpc usr001]$ cat arch1 [usr001@linuxpc usr001]$ cat a arch2 >>a 2>&1 orden es jue sep 16 22:30:52 ECT 2004 importante cat: arch2: No existe el fichero o el directorio jue sep 16 22:30:52 ECT 2004 cat: arch2: No existe el fichero o el directorio [usr001@linuxpc usr001]$ cat arch1 arch2 2>&1 >a “2>&1” no cat: arch2: No existe el fichero o el directorio funciona [usr001@linuxpc usr001]$ cat a jue sep 16 22:30:52 ECT 2004 LINUX Básico (6. Shells(1)) 21
  • 22. Redireccionamiento de entrada• Se usa para redireccionar la entrada en un comando a fin de que provenga de un archivo y no de la terminal.• Los símbolos de redireccionamiento de entrada son “<”.• El símbolo “<” conecta el "stdin” de un comando con un archivo. < arch std entrada arch std comando ivo ivo conectar in in[usr001@linuxpc usr001]$ grep usr000 < /etc/passwdusr000:x:500:500::/home/usr000:/bin/bash los[usr001@linuxpc usr001]$ cat /etc/passwd | grep usr000 resultados sonusr000:x:500:500::/home/usr000:/bin/bash iguales.[usr001@linuxpc usr001]$ grep usr000 /etc/passwdusr000:x:500:500::/home/usr000:/bin/bash LINUX Básico (6. Shells(1)) 22
  • 23. 6.4 Sustituciones (1) Sustitución de variables • 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 Nombre de ruta de acceso completo de su directorio base. LOGNAME Su nombre de usuario. PATH Directorios en los que el shell busca comandos. PS1 Principal indicador del shell. PWD Nombre de ruta de acceso completo del directorio de trabajo actual. SHELL Nombre de su shell actual. TERM Tipo de terminal que utiliza usted. LINUX Básico (6. Shells(1)) 23
  • 24. • Con el carácter “$”, podemos sustituir el nombre de un variable con su valor. sustituir[usr000@linuxpc usr000]$ echo $HOME/home/usr000 echo /home/usr000[usr000@linuxpc usr000]$ ls -la $HOMEtotal 28drwx------ 2 usr000 usr000 4096 sep 17 12:37 .drwxr-xr-x 15 root root 4096 sep 15 23:46 ..-rw------- 1 usr000 usr000 1332 sep 17 12:28 .bash_history-rw-r--r-- 1 usr000 usr000 24 sep 15 23:39 .bash_logout-rw-r--r-- 1 usr000 usr000 191 sep 15 23:39 .bash_profile-rw-r--r-- 1 usr000 usr000 124 sep 15 23:39 .bashrc-rw-r--r-- 1 usr000 usr000 120 sep 15 23:39 .gtkrc[usr000@linuxpc usr000]$ cd $HOME cambia el directorio de trabajo actual a su directorio base. = “cd” = “cd ~”(32) echo Toma el argumento que se le pasa y lo escribe a la salida estándar. LINUX Básico (6. Shells(1)) 24
  • 25. 6.4(2) Sustitución de comandos • La sustitución de comandos sustituye el resultado de un comando por un parámetro de posición. • Para sustituir un comando, ponemos el comando entre dos “`” (acentos graves). ` comando ` [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” LINUX Básico (6. Shells(1)) 25
  • 26. 6.5 Comillas y apóstrofos (1) Comillas " " • Las comillas " " desactivan los caracteres especiales, “*”, “?”, “[”, “]”, “>”, “<”, ... • Sin embargo, la sustitución de variables “$” y comandos ` ` aún se lleva a afecto.[usr000@linuxpc usr000]$ lsa el carácter comodín[usr000@linuxpc usr000]$ ls *a un nombre de archivo[usr000@linuxpc usr000]$ ls "*"ls: *: No existe el fichero o el directorio[usr000@linuxpc usr000]$ date > " " un archivo del[usr000@linuxpc usr000]$ ls -l que nombre es un archivo un espacio. existe.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]$ LINUX Básico (6. Shells(1)) 26
  • 27. sustitución de variables[usr000@linuxpc usr000]$ echo $HOME/home/usr000[usr000@linuxpc usr000]$ echo "$HOME" para desactivar/home/usr000 la sustitución,[usr000@linuxpc usr000]$ echo "$HOME" "" es necesario.$HOME[usr000@linuxpc usr000]$ echo `whoami` sustitución deusr000 comandos[usr000@linuxpc usr000]$ echo "`whoami`"usr000[usr000@linuxpc usr000]$ echo "`whoami`" para desactivar`whoami` la sustitución, "" es necesario. LINUX Básico (6. Shells(1)) 27
  • 28. (2) Apóstrofos • Los apóstrofos desactivan todo el análisis sintáctico de shell. [usr000@linuxpc usr000]$ ls a el carácter comodín [usr000@linuxpc usr000]$ ls ? a un nombre de archivo [usr000@linuxpc usr000]$ ls ? ls: ?: No existe el fichero o el directorio [usr000@linuxpc usr000]$ echo $HOME sustitución de variables /home/usr000 [usr000@linuxpc usr000]$ echo $HOME se ha desactivado $HOME la sustitución. [usr000@linuxpc usr000]$ echo `whoami` usr000 sustitución de [usr000@linuxpc usr000]$ echo `whoami` comandos `whoami` se ha desactivado la sustitución. LINUX Básico (6. Shells(1)) 28
  • 29. 6.6 Grupos de comandos (1) Secuencia de comandos (punto y coma “;”) • Un comando simple se concluye con un “Enter”. • Si quiere colocar múltiples comandos en una línea de comando 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 línea. [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 Básico (6. Shells(1)) 29
  • 30. 6.6(2) Grupos de comandos Llaves { } • Si quiere redireccionar la entrada o la salida hacia todos los comandos como un grupo, puede hacerlo al convertir la línea de comando en un grupo de comandos. • Un grupo de comandos son varios comandos encerrados entre llaves { }. { comando1; comando2; } > archivo { comando1; comando2; } | archivo un espacio es punto y coma es necesario. necesario. [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 LINUX Básico (6. Shells(1)) 30
  • 31. ¡ Muchas gracias por su atención ! ¡ Hasta pronto ! En la próxima hora, vamos a aprender sobre el control de procesos. LINUX Básico (6. Shells(1)) 31