Anda di halaman 1dari 118

Introducci on al shell

Grupo de Sistemas y Comunicaciones


gsyc-profes@gsyc.escet.urjc.es

Febrero de 2007

c GSyC, Grupo de Sistemas y Comunicaciones, 2007 http://gsyc.escet.urjc.es

Se permite copiar, distribuir, exhibir, comunicar la obra, crear obras derivadas y hacer uso comercial de este trabajo bajo la condici on de reconocer y dar cr edito al autor original (Creative Commons Attribution License 2.0 ).

c GSyC 2007

Introducci on al Shell

c GSyC 2007

Introducci on al shell

Interfaces de usuario (cont.)

Interfaces de usuario
Interfaz gr aco Supone un gran avance Excelente para usuarios, o para tareas que hagamos de vez en cuando Mucho menos ecientes En Unix hay cosas s olo se pueden hacer con interfaz texto No es la losof a Unix No son est andar Unix Exigen tener gr acos (mucho m as caro que pj ssh) Hay gestores de cheros gr acos, pero no los uses -si quieres dominar Unixc GSyC 2007 Introducci on al shell : Introducci on al Shell

Interfaces de usuario

Unix dispone de interfaz gr aco desde los 80. X Window. (No confundir con Microsoft Windows). Sobre las X Window van el gestor de ventanas y el escritorio (Actualmente KDE o Gnome)

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Interfaces de usuario (cont.)

Interfaz de texto Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal. interfaz texto: teclado terminales x consola: terminales virtuales (Ctrl+Alt+F1) (Ctrl+Alt+F6) Vuelta a sesi on X (Ctrl+Alt+F7) exit (EOF, Ctrl + D)

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Interfaces de usuario (cont.)

Interfaz de texto en Unix:

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Interfaces de usuario (cont.)

Interfaz gr aco en Unix:

Qu e deber a manejar un fot ografo?


c GSyC 2007 Introducci on al shell : Introducci on al Shell

Shell:Int erprete de comandos

Shell:Int erprete de comandos


Programa que lee el texto (borrar, autocompletar, history), lo analiza (expande metacaracteres) Ejecuta el programa (comando) Duerme A menos que lancemos comando en background acroread file.1 & Hay muchos: /bin/sh, /bin/bash, /bin/csh ... variables de entorno los comandos son s olo (peque nos) programas ejecutables

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Shell:Int erprete de comandos (cont.)

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Shell:Int erprete de comandos (cont.)

10

Documentaci on El comando m as importante: man


q / Finaliza la consulta (quit) Busca una cadena

El manual se organiza en tomos man 1 write man 2 write


1 2 3 4 5 6 7 Programas ejecutables y guiones de bash Llamadas del sistema (funciones servidas por el n ucleo) Llamadas de biblioteca Ficheros especiales ( /dev) Formato de ficheros y convenios p.ej. I/etc/passwd Juegos Paquetes de macros y convenios p.ej. man(7), signal(7).

Para buscar en el manual: apropos


c GSyC 2007 Introducci on al shell : Introducci on al Shell

Shell:Int erprete de comandos (cont.)

11

Tambi en puede ser u til buscar un tutorial, howto o FAQ Suele estar mal considerado consultar a un humano sin hacer cierto esfuerzo previo

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Shell:Int erprete de comandos (cont.)

12

Qui en soy? D onde estoy? Qu e tengo? whoami Muestra el usuario id Muestra usuario y grupos uname uname -a Versi on de Linux hostname Nombre de m aquina pwd Directorio de trabajo actual

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Shell:Int erprete de comandos (cont.)

13

w Usuarios conectados a la m aquina du du -s du -h Espacio de disco ocupado por los cheros de un directorio Espacio de disco ocupado por un directorio Unidades legibles para un humano

df Espacio de disco libre

c GSyC 2007

Introducci on al shell : Introducci on al Shell

14

ls ls ls ls ls

-l -a -lh -R -ld

Formato largo Muestra cheros ocultos (empiezan por punto) Formato largo, unidades legibles por humano Recursivo Lista el directorio, no su contenido

Unix es case sensitive

c GSyC 2007

Introducci on al shell : Introducci on al Shell

(cont.)

15

Metacaracteres del Shell $ * ? [] ejemplo: ls *.txt el shell lo expande a ls texto1.txt texto2.txt texto3.txt Variable 0 o m as caracteres cualquiera exactamente 1 caracter cualquiera 1 caracter de la clase

El comando recibe 3 argumentos, no sabe nada de metacaracteres

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Ficheros

16

Ficheros
Arbol de directorios Arbol, todo cuelga de un u nico directorio raiz Dentro de cada directorio, habr a cheros o subdirectorios jerarqu a cl asica unix: /home /bin /usr (...)
c GSyC 2007

Introducci on al shell : Introducci on al Shell

Ficheros (cont.)

17

path cd . .. El slash / separa directorios Fichero que empieza por / : absoluto Fichero sin /: relativo cp cp cp fichero tmp fichero ./tmp fichero /tmp

cd ~jperez/dir

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Ficheros (cont.)

18

Comandos de cheros Tradicionalmente en Unix los cheros no llevaban extensi on No hay un programa asociado a cada extension file mifichero Indica el tipo del chero cp origen destino cp -r /tmp . Copia el directorio tmp al directorio actual cp /tmp/* . Copia los cheros del directorio tmp al directorio actual cp -r /usr/share/ejemplo $HOME/pruebas Copia el directorio ejemplo en el directorio pruebas del home del usurio actual. mv origen destino Mueve un chero. Equivale a renombrar
c GSyC 2007 Introducci on al shell : Introducci on al Shell

Ficheros (cont.)

19

cp y mv pueden recibir m as de 2 argumentos. En ese caso, el ultimo debe ser un directorio rm chero borra chero a rm -r directorio Borra un directorio y todo su contenido mkdir Crea un directorio
a Cuando

hablemos de enlaces veremos una denici on m as exacta

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Ficheros (cont.)

20

Un usuario de MS-DOS podr a intentar hacer mv *.txt *.doc # MAL! No funciona, y puede ser fatal Supongamos que tenemos en el directorio actual
carta1.txt carta2.doc

Tras expandir los asteriscos, el resultado es mv carta1.txt carta2.doc Soluci on v alida a : # destruimos el segundo fichero!

#!/bin/bash for fichero in *.txt do nombre=$(echo $fichero | cut -d. -f1) extension=$(echo $fichero | cut -d. -f2) mv $fichero $nombre.doc done a Siempre que solo haya un punto en el nombre

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Usuario root

21

Usuario root
En Unix, tradicionalmente hay un s uper-usuario root. El directorio home del usuario root es el directorio /root su nos convertimos en root sudo aparece con posterioridad. En muchos Unix es opcional, en Ubuntu es obligatorio sudo comando ejecuta un u nico comando como root Solo los usuario en el grupo admin pueden ejecutar sudo Para aplicaciones gr acas, no debe usarse sudo sino gksudo gksudo mi-aplicacion
c GSyC 2007 Introducci on al shell : Introducci on al Shell

Usuarios y grupos

22

Usuarios y grupos
Comandos que s olo pueden ejecutarse como root groupadd grupo crea un grupo adduser usuario a a nade un usuario adduser usuario grupo a nade un usuario a un grupo usermod -g grupo inicial usuario Cambia el grupo inicial del usuario userdel usuario borra un usuario
a En

RedHat, useradd usuario y chfn usuario

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Usuarios y grupos

23

userdel -r usuario borra un usuario y su HOME passwd usuario Cambia la contrase na de un usuario su usuario Cambia el id. de usuario actual chown due no chero(s) cambia el due no de un chero chgrp due no chero(s) cambia el grupo de un chero Comandos para cualquier usuario passwd Cambia la contrase na
c GSyC 2007 Introducci on al shell : Introducci on al Shell

Usuarios y grupos

24

id usuario muestra id, gid, grupos newgrp grupo Entre los grupos de un usuario, elige el actual

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Usuarios y grupos (cont.)

25

Permisos de los cheros

chmod

754 mi_fichero

chmod [ugo] [+-] [rwx] mi_fichero chmod o+x mi_fichero

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Usuarios y grupos (cont.)

26

Permisos de los directorios r y x normalmente van juntos. (Ambos o ninguno). Permiten entrar en el directorio w permite a nadir a nadir cheros o borrarlos Muy Importante: Comprueba los permisos de tu $HOME, en muchos sistemas por omisi on est a abierto Atenci on, un chero sin permisos de escritura pero con permiso de escritura en el directorio que lo contiene, no podr a ser modicado pero s borrado
(a menos que est e el sticky bit activado chmod [+-]t dir)

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Conexi on con otras m aquinas

27

Conexi on con otras m aquinas


ping Envia indenidamente paquetes de prueba. Peligroso en scripts ping -c 1 Envia 1 paquete de prueba telnet (no recomendable, contrase nas sin cifrar) ftp (no recomendable, excepto ftp an onimo) ssh usuario@maquina scp usuario@maquina:/dir/ch destino

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Enlaces

28

Enlaces
enlace duro Un nuevo nombre para el chero ln a b enlace blando o simb olico un nuevo chero que apunta a un nombre ln -s a c rm borra un nombre de un chero si es el u ltimo, borra el chero. Con enlaces simb olicos, si se borra el original el enlace queda roto

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Enlaces (cont.)

29

Enlace duro

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Enlaces (cont.)

30

Enlace simb olico

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Entrada y salida

31

Entrada y salida

entrada est andar salida est andar salida de error est andar

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Entrada y salida (cont.)

32

Paso de argumentos a comandos Muchos comandos se comportan as (no todos) Sin argumentos: Entrada est andar wc 1 argumento: Nombre de chero wc fichero n nombres de chero wc fichero1 fichero2

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Entrada y salida (cont.)

33

cat lee lo que hay en stdin y lo escribe en stdout (Ctrl D: n de chero) cat fichero1 fichero2 lee los cheros que se pasan como argumento y los escribe (concatenados) en stdout (Ctrl D: n de chero) echo argumento escribe en stdout el texto que se le pasa como argumento less fichero escribe un chero en stdout, permitiendo paginaci on

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Entrada y salida (cont.)

34

Redirecciones < redirige stdin desde chero > redirige stdout a chero, reemplazando >> redirige stdout a chero, a nadiendo & > redirige stdout y stderr a chero | redirige el stdout de un proceso al stdin del siguiente cat cat file1 file2 >file3 cat file1 | less cat >file1 less fichero cat fichero | less less <fichero (El resultado es el mismo, pero es importante distinguirlo)
c GSyC 2007 Introducci on al shell : Introducci on al Shell

Comandos de procesos

35

Comandos de procesos
ps ps ps Informaci on sobre los procesos Informaci on sobre todos los procesos de la maquina Formato largo

-e -ef

top kill

Muestra los procesos que consumen m as cpu Envia una se nal a un proceso

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Se nales

36

Se nales
kill -9 pid 15 SIGTERM (valor por defecto) 9 SIGKILL 2 SIGINT (Ctrl C) interrumpe man 7 signal

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Filtros

37

Filtros
grep grep hidalgo quijote.txt Devuelve l neas con el patr on grep "la mancha" quijote.txt grep -v Devuelve l neas sin el patr on grep -i Ignora may usculas/min usculas Atenci on,en el patr on ana encaja la palabra rosana cut ls -l | cut -c2-4 cat /etc/passwd | cut -d: -f5 paste paste -s wc
c GSyC 2007 Introducci on al shell : Introducci on al Shell

Filtros

38

di sort uniq head head -5 fichero.txt tail tail -3 fichero.txt who | cut -c1-8 |sort |uniq | wc -l ps -ef | grep miguel | grep -v gvim

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Filtros

39

Expresiones Regulares (Regexp) ? * + . [ ] [^ ] ^ $ \< \> | () {min,max} opcional 0 o m as veces 1 o m as veces cualquier car acter cualquiera de la clase cualquiera excepto la clase principio de linea fin de linea inicio de palabra fin de palabra o agrupar rango

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Filtros (cont.)

40

No confundir los metacaracteres de las regexp con los metacaracteres del shell importante: escapar con \

egrep digo fichero sed s/digo/diego/g fichero

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Variables de entorno (cont.)

41

Variables
variable=valor echo $variable Sin espacios antes y despues del igual con $ para acceder al contenido de la variable sin $ en la asignaci on s olo son visibles en ese proceso

Variables de entorno
export VARIABLE=valor hace que los procesos hijos la reciban por convenio se usan may usculas

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Variables de entorno

42

se pueden modicar en el ~/.bashrc que ser a ejecutado al abrir una nueva shell printenv muestra todas las variables de entorno HOME HOSTNAME USER PATH export PATH=$PATH:/usr/local/bin:.

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Anexo: Invocaci on del shell

43

Anexo: Invocaci on del shell


1. bash interactivo y de login Ej: Ctrl+Alt+F1 lee y ejecuta /etc/profile Despu es, ejecuta el primero que encuentre de ~/.bash_profile ~/.bash_login ~/.profile No se ejecuta .bashrc, a menos que .bash_profile lo llame 2. bash interactivo, no de login Ej: Una consola desde una sesi on X ~/.bashrc
c GSyC 2007 Introducci on al shell : Introducci on al Shell

Anexo: Invocaci on del shell

44

3. bash no interactivo, no de login Ej: Un script Se ejecuta el chero $BASH_ENV Atenci on,hablamos del inicio del shell, no de unix

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Anexo: Empaquetado de cheros

45

Anexo: Empaquetado de cheros


gzip Comprime o descomprime 1 chero Extensi on: fichero.z fichero.gz

Comprimir: gzip -c fichero > fichero.z Descomprimir: gzip -d fichero.z Descomprimir: zcat fichero.z zcat fichero.z

| less > fichero_descomprimido

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Anexo: Empaquetado de cheros

46

tar + gzip Comprime o descomprime varios cheros, directorios Extensi on: fichero.tar.gz fichero.tgz Comprimir: tar -cvzf fichero.tgz fichero1 fichero2 Descomprimir: tar -xvzf fichero.tgz Mostrar contenido: tar -tzf fichero.tgz WinZip No hay compresor en Linux. (Pero WinZip sabe descomprimir .tgz) Descomprimir:
c GSyC 2007

unzip fichero.zip
Introducci on al shell : Introducci on al Shell

Anexo: Empaquetado de cheros (cont.)

47

Disquetes Podemos montar la disquetera como un sistema de cheros Unix Pero suele ser m as pr actico copiar un .tgz en modo msdos mdir a: mcopy fichero a: mcopy a:fichero Trocear cheros Trocear split -b 1440k cancion.mp3 Recomponer cat trozo* > cancion.mp3

trozo

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Anexo: Empaquetado de cheros (cont.)

48

Localizar cheros find find . | grep fichero locate updatedb busca un chero Filtra la b usqueda

Busca un chero (en una base de datos) Actualiza la base de datos

c GSyC 2007

Introducci on al shell : Introducci on al Shell

Anexo: Empaquetado de cheros (cont.)

49

Programaci on Shell

c GSyC 2007

Introducci on al shell : Programaci on Shell

Introducci on

50

Introducci on
comandos, programas de usuario, procesamiento de l neas, etc. #!/bin/bash a="hola mundo" echo $a Un chero de texto con permiso ejecuci on, empieza por #!, es ejecutado por /bin/bash

c GSyC 2007

Introducci on al shell : Programaci on Shell

Introducci on (cont.)

51

En la mayoria de los lenguajes modernos Las cadenas se entrecomillan Un identicador de variable es secuencia de letras y digitos Las cadenas se concatenan con algun operador print "hola, soy " + nombre put_line("hola, soy " & nombre); # python --ada

c GSyC 2007

Introducci on al shell : Programaci on Shell

Introducci on (cont.)

52

bash es diferente Las variables empiezan por $ cuando son referenciadas No llevan $ en la asignaci on No puede haber espacios antes y despues del igual Los $ se interpretan en el interior de comillas dobles nombre="Juan P erez" echo hola, soy $nombre echo "hola, soy $nombre" No hace falta operador para concatenar cadenas (todo son cadenas) cp $nombre_fichero $nombre_fichero.bak

c GSyC 2007

Introducci on al shell : Programaci on Shell

Comillas dobles

53

Comillas dobles
La shell interpreta los $ y considera 1 argumento lo que va entre comillas dobles. En algunos casos resulta equivalente ponerlas u omitirlas Ej: echo saca por stdout todos sus argumentos echo me llamo $nombre el comando echo recibe 3 argumentos echo "me llamo $nombre" el comando echo recibe 1 argumentos

c GSyC 2007

Introducci on al shell : Programaci on Shell

Comillas dobles (cont.)

54

En otros, no Ej:El primer argumento de grep es el patr on, el resto, los cheros donde buscarlo grep "la mancha" quijote.txt el comando grep recibe 2 argumentos grep la mancha quijote.txt el comando grep recibe 3 argumentos Busca la cadena la en el chero mancha y en quijote.txt

c GSyC 2007

Introducci on al shell : Programaci on Shell

paso de par ametros

55

paso de par ametros


$0 Nombre del script $1 Primer argumento $2 Segundo argumento [...] $* Todos los argumentos (excluido $0) $# No de argumentos (excluido $0) $$ pid del proceso. (Uso t pico: Identificadores unicos)

#!/bin/bash echo "primer parametro que recibo: $1, segundo: $2, total $#" echo "la lista completa de parametros es $*"

c GSyC 2007

Introducci on al shell : Programaci on Shell

paso de par ametros (cont.)

56

condicional Cada programa devuelve dos cosas diferentes e independientes Texto por stdout y stderr Un valor cierto o falso, seg un considere que ha tenido exito o ha fracasado Este valor lo puede ler el condicional #!/bin/bash if grep hidalgo quijote.txt then echo si else echo no fi

c GSyC 2007

Introducci on al shell : Programaci on Shell

paso de par ametros (cont.)

57

#!/bin/bash if ping -c1 then echo si else echo no fi

mazinger && ping -c1 localhost

&& || !

y l ogico o l ogico negaci on

c GSyC 2007

Introducci on al shell : Programaci on Shell

paso de par ametros (cont.)

58

Expresiones bash no sabe comparar, necesita test


if test 2 -eq 2 then echo iguales else echo distintos fi if [ garcia \< fernandez then echo mayor else echo no mayor fi

Atenci on: Debe haber espacios antes y despu es del corchete


c GSyC 2007 Introducci on al shell : Programaci on Shell

(cont.)

59

test test test test test test test test test test test test test test
c GSyC 2007

-z cadena # cadena vacia? -n cadena # cadena no vacia? cadena1 = cadena2 cadena1 != cadena2 cadena1 \< cadena2 cadena1 \> cadena2 a -eq b # el entero a es igual a b? a -ne b # no igual? a -lt b # menor que? a -le b # menor o igual? a -gt b # mayor que? a -ge b # mayor o igual? -e fichero # Existe el fichero? -f fichero # Es normal? (Ni dir ni dev)
Introducci on al shell : Programaci on Shell

60

test test test test

-d -r -x -w

fichero fichero fichero fichero

# # # #

es un dir? existe y legible por usuario? existe y ejecutable por usuario? escribible por el usuario?

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

61

bash no sabe operar #!/bin/bash expr 5 \* 3 echo "2 * 2" | bc echo $((2+2))

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

62

read read variable Lee una l nea de stdin y la asigna a una variable. Devuelve cierto si hay texto en stdin Devuelve falso cuando llega n de chero en stdin #!/bin/bash echo Dime tu nombre read nombre echo hola $nombre

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

63

bucles while #!/bin/bash while true do sleep 1 echo -n "tic" sleep 1 echo " tac" done

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

64

#!/bin/bash a=0 while [ $a -lt 10 ] do echo $a a=$(($a+1)) done Tambi en podr a hacerse con seq

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

65

#!/bin/bash while read linea do echo $linea done #!/bin/bash cat quijote.txt | while read linea do echo $linea # hacemos cualquier operaci on a $linea done #!/bin/bash while read linea do echo $linea done < quijote.txt

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

66

bucles for Muy distinto a otros lenguajes Recorre los par ametros recibidos de l nea de comandos #!/bin/bash for i do echo "recibo el parametro $i" done

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

67

Recorre los cheros que encajen en el comod n for i in * do echo $i done for i in *.bak do rm $i done

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

68

Recorre las palabras de una cadena lista=perro zapato tomate for i in $lista do echo "el $i" done Atenci on: for itera sobre todas las palabras de una cadena. Para procesar l nea a l nea, debe usarse while read...

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

69

Comillas Comilla invertida (comilla grave, comilla de ejecuci on) ... Se ejecuta ... y el resultado reemplaza ... Los retornos de carro se reemplazan por espacios Comilla recta ... ... se toma literalmente Comilla doble ... ... se toma literalmente, tras interpretar $

$() equivale a comilla invertida

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

70

Atenci on a la tipograf a: El aspecto de la comilla normal (recta) y de la invertida puede cambiar con el tipo de letra El signicado de ambas es completamente distinto comilla invertida (La que abre comillas, a la dcha. de la p en el teclado) comilla recta (a la dcha. del cero en el teclado)

c GSyC 2007

Introducci on al shell : Programaci on Shell

(cont.)

71

Ejemplo 1: #!/bin/bash a=ls echo $a echo "$a" echo $a Ejemplo 2: #!/bin/bash ls a=ls a=ls ls

#Comilla recta #Comilla doble #Comilla invertida

#Llama al comando ls, genera un listado #ls a la dcha de =, la vble contiene una l y una s #la vble contiene un listado, sin retornos de carro #Intenta ejecutar los ficheros del listado

c GSyC 2007

Introducci on al shell : Programaci on Shell

Ejercicio

72

Ejercicio
Fichero con notas
fgarcia amartin jcano apto no apto no apto

Realizar un script bash que: 1. Reciba como primer argumento el nombre del chero con las notas 2. Cuente no de presentados y no aprobados 3. Envie a cada estudiante correo con su nota, no de presentados, el no de aprobados

c GSyC 2007

Introducci on al shell : Programaci on Shell

73

#!/bin/bash suspensos=cat $1 | egrep "no apto" | wc -l presentados=cat $1 | wc -l aprobados=echo $presentados -$suspensos | bc cat $1 | cut -f1 > aux_personas

for persona in cat aux_personas do echo " egrep $persona $1. Presentados:$presentados \ ,Aprobados $aprobados" \ | mail $persona@localhost done
c GSyC 2007 Introducci on al shell : Programaci on Shell

Enlaces

74

Enlaces
Sobre este tema hay much sima documentaci on. Entre la disponible en el web recomendamos Luis Cearra. Sistemas Abiertos Mark Burgess. The Unix Programming Environment

c GSyC 2007

Introducci on al shell : Programaci on Shell

Enlaces (cont.)

75

Anexo:Jerarqu a del sistema de cheros Linux

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

Introducci on:

76

Introducci on:
Para quien se acerca a Linux resulta confuso un ls -l /
drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxrwsr-x drwxr-xr-x drwxr-xr-x dr-xr-xr-x dr-xr-xr-x drwxr-xr-x drwxr-xr-x drwxrwxrwt drwxr-xr-x drwxr-xr-x 2 2 5 66 7 6 2 2 67 14 2 9 15 16 root root root root root root root root root root root root root root root root root root staff root root root root root root root root root 4096 4096 24576 4096 4096 4096 16384 4096 0 4096 4096 4096 4096 4096 ene mar may may abr feb nov nov may feb ene may nov nov 30 12 22 19 16 1 7 10 19 12 30 22 8 9 20:34 19:46 06:27 00:26 17:36 18:02 2000 2000 02:25 19:28 20:30 10:19 2000 2000 bin boot dev etc home lib lost+found mix proc root sbin tmp usr var

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

Normalizaci on de Linux

77

Normalizaci on de Linux
La estructura de todos los Unix se parece La estructura de todas las distribuciones Linux se parece mucho

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

Jerarqu a cl asica

78

Jerarqu a cl asica
La jerarqu a actual puede resultar algo il ogica, pero hay motivos hist oricos En los primeros Unix los discos eran m as peque nos y m as caros, en uno estaba lo imprescindible para que el sistema funcionase: / /etc /lib /tmp /bin /root

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

Jerarqu a cl asica (cont.)

79

y en un segundo disco, se montaba /usr /usr/spool /usr/bin /usr/include /usr/tmp /usr/adrn /usr/lib

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

FHS Filesystem Hierarchy Standard

80

FHS Filesystem Hierarchy Standard


Est andar propuesto. Versi on actual: 2.2 (mayo 2001) 1. Directorios de usuarios 2. Programas (incluyendo comandos y librer as) 3. Conguraci on del sistema 4. El Hardware 5. Documentaci on 6. Ficheros Temporales 7. Otros directorios relacionados con el S.O.

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

1. Directorios de usuarios

81

1. Directorios de usuarios
Directorio del administrador /root Usuarios locales /home/jperez o bien /home/profesores /home/alumnos Usuarios NIS /users/jperez

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

2. Programas y comandos

82

2. Programas y comandos
Comandos u tiles para todos los usuarios /bin /usr/bin Comandos u tiles para el root /sbin /usr/sbin (Todo lo que haya bajo /usr deber a ser s olo lectura)

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

2. Programas y comandos (cont.)

83

Programas Software no incluido en la distribuci on Linux /usr/local Grandes aplicaciones como StarOce, KDE, Oracle... /opt

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

2. Programas y comandos (cont.)

84

Librer as est aticas (para compilar) y din amicas /lib /usr/lib /usr/local/lib Ficheros de cabecera (para compilar) /usr/include Ficheros independientes de la arquitectura /usr/share

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

3. Conguraci on del sistema

85

3. Conguraci on del sistema


Directorio /etc Informaci on sobre el sistema de cheros (puntos de montaje, opciones) /etc/fstab cuentas de usuarios /etc/passwd Passwords de los usuarios /etc/shadow Scripts para arranque del sistema /etc/init.d ...
c GSyC 2007 Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

4. El Hardware

86

4. El Hardware
Los dispositivos del sistema /dev /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/cdrom /dev/fd0 /dev/audio /dev/modem /dev/mouse /dev/printer /dev/ttyn IDE IDE IDE IDE primario master primario slave secundario master secundario slave

disquete tarjeta sonido

donde n es el no de consola

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

4. El Hardware (cont.)

87

Ficheros virtuales que representan las estructuras del Kernel en ejecuci on, dan informaci on sobre la cpu... /proc/cpuinfo /proc/pci /proc/ioports /proc/meminfo CPU Tarjetas PCI Puertos I/O Informaci on sobre la memoria

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

5. Documentaci on

88

5. Documentaci on
/usr/share/doc Documentaci on sobre el software del sistema /usr/man Ficheros del comando man

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

6. Ficheros Temporales

89

6. Ficheros Temporales
Ficheros temporales (se borran cuando la m aquina arranca) /tmp Fragmentos de cheros recuperados /lost+found

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

6. Ficheros Temporales (cont.)

90

Ficheros que cambian con frecuencia /var /var/log/messages /var/log/dmesg /var/spool/lpd/lp /var/tmp /var/mail /var/run logs del sistema logs del sistema al arrancar spool de la impresora Ficheros temporales Correo de los usuarios PID de programas en ejecuci on

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

7. Otros directorios relacionados con el S.O.

91

7. Otros directorios relacionados con el S.O.


Informaci on u til para el arranque del sistema: /boot C odigo fuente C odigo fuente del software de sistema /usr/src C odigo fuente del kernel linux /usr/src/linux

c GSyC 2007

Introducci on al shell : Anexo:Jerarqu a del sistema de ficheros Linux

7. Otros directorios relacionados con el S.O. (cont.)

92

Editores de texto

c GSyC 2007

Introducci on al shell : Editores de texto

Introducci on

93

Introducci on
Este es un repaso de algunos editores de texto para linux. Cu al es mejor? Cada uno tiene sus ventajas e inconvenientes. La respuesta a esta pregunta en buena parte depende de gustos personales Este es un asunto t pico para guerras de religi on

c GSyC 2007

Introducci on al shell : Editores de texto

Introducci on (cont.)

94

c GSyC 2007

Introducci on al shell : Editores de texto

vi (cont.)

95

vi
El editor m as clasico en Unix. A no 1976 Se considera que cualquier administrador Unix deber a conocer al menos los comandos b asicos Hoy usamos clones como vim. Ventajas Siempre estar a disponible y funcionando en cualquier m aquina Unix Versiones para la mayor a de los SSOO (Windows, Mac OS...) Es muy exible y potente, conoci endolo bien se puede trabajar a gran velocidad Est a pensado para trabajar en sesiones remotas con malas conexiones
c GSyC 2007 Introducci on al shell : Editores de texto

vi

96

La versi on gvim tiene men us y botones, es u til mientras se aprenden los comandos

c GSyC 2007

Introducci on al shell : Editores de texto

vi (cont.)

97

Inconvenientes Interfaz de usuario muy anticuado, el usuario debe memorizar comandos donde hasta las may usculas son signicativas!

c GSyC 2007

Introducci on al shell : Editores de texto

vi (cont.)

98

1. Modo comando (modo orden, modo normal) 2. Mode texto (mode entrada) Comandos Imprescindibles
$ vi fichero i,o Esc Esc: R :r :q :w nombre :wq :q! J punto u dd edita el fichero, si no existe lo crea pasan a modo texto pasa a modo comando pasa a comando de modo linea pasa a mode reemplazar, hasta que pulsemos Esc leer un fichero Salir del buffer / salir del programa escribe fichero Escribir y salir, equivale a :x zz Salir sin grabar Une dos lineas Repite el ultimo comando Deshace ultimo cambio Borra l nea actual

c GSyC 2007

Introducci on al shell : Editores de texto

vi (cont.)

99

2dd D p /patron G 5G %

Borra dos l neas Borra hasta final de l nea pega lo ultimo copiado o borrado Busca un patr on (hacia adelante) Ir a Final del archivo Ir a l nea 5 correspondencia de par entesis, llaves...

c GSyC 2007

Introducci on al shell : Editores de texto

vi (cont.)

100

Otros Comandos
0 $ w b r 4cw x 5x dw n N yy yw 3yw * ma mb a
c GSyC 2007

ir a principio l nea ir a fin linea siguiente palabra palabra anterior Sustituye 1 car acter Cambia las pr oximas 4 palabras Borra car acter Borrar 5 caracteres Borra hasta fin palabra Repite b usqueda Busca en direcci on inversa a anterior copia (yanc) linea Copia palabra copia 3 palabras busca palabra igual a la que marca el cursor marca a marca b ir a marca a
Introducci on al shell : Editores de texto

vi (cont.)

101

b ir a marca b Ctrl G Indica linea actual ~ Pasa de may. a minusc. o al rev es :49,53 w! fichero Graba en fichero lineas de 49 a 53 :.,53 w! fichero Graba en fichero de linea actual a final :1,$ s/digo/diego/g Busca y Reemplaza :set nu Indica el no de linea :set nonu Desactiva no de linea :set ic Ignore Case (Insensible a may usculas en b usquedas) :set noic Desactiva ic

Puede congurarse en un chero en el $HOME


koji@mazinger:~$ cat .vimrc set vb set ic set tabstop=8 syntax on (Elimina pitidos, ignora may usculas/min usculas, tama no del tabulador, colorea con la sintaxis)

c GSyC 2007

Introducci on al shell : Editores de texto

vi (cont.)

102

Todo lo necesario sobre vi est a en: vi lovers home page

c GSyC 2007

Introducci on al shell : Editores de texto

Otros editores ligeros

103

Otros editores ligeros


Todo programador Unix/Linux deber a conocer alg un editor ligero, que trabaje en modo texto. Eso permitir a, por ejemplo Trabajar cuando no tengamos X Window (Gr acos) Trabajar desde otra m aquina (en la universidad o en casa) aunque s olo tengamos windows y una conexi on mala. O incluso un PDA y un tel efono m ovil Para esto lo mejor es vi. Pero si nos asusta el interfaz de usuario, hay alternativas como joe o nano (clon de pico)

c GSyC 2007

Introducci on al shell : Editores de texto

Emacs / XEmacs

104

Emacs / XEmacs
Editor cl asico en Unix. Uno de los m as conocidos, se populariza a mediados de los 80 Ventajas Complet simo, es mucho m as que un editor. Permite leer correo, news, se integra con gran cantidad de herramientas... M odulos para muchos lenguajes de programaci on Da formato y color al fuente, con mucha calidad. Completamente personalizable (en lisp) Puede emular a vi

c GSyC 2007

Introducci on al shell : Editores de texto

Emacs / XEmacs (cont.)

105

Inconvenientes Muy grande y pesado, consume muchos recursos. Su uso resulta complicado A un para las tareas sencillas, tiene alguna peculiaridad que lo hace poco intuitivo al usuario actual

c GSyC 2007

Introducci on al shell : Editores de texto

Emacs / XEmacs (cont.)

106

Usando emacs

menu pantalla edici on l nea de modo l nea comandos

c GSyC 2007

Introducci on al shell : Editores de texto

Emacs / XEmacs (cont.)

107

emacs = xemacs

c GSyC 2007

Introducci on al shell : Editores de texto

Emacs / XEmacs (cont.)

108

Atajos de teclado CTRL-K borrar linea ESC-X query-replace, ESC-X replace ESC-X goto-line CTRL-X-S salvar CTRL-X-F encontrar chero CTRL-W=cortar, CTRL-Y=pegar CTRL-@=marca

c GSyC 2007

Introducci on al shell : Editores de texto

Emacs / XEmacs (cont.)

109

Enlaces sobre Emacs/XEmacs Emacs http://www.gnu.org/software/emacs XEmacs http://www.xemacs.org

c GSyC 2007

Introducci on al shell : Editores de texto

wily/acme

110

wily/acme
wily es un clon para linux del acme de plan9 ventajas Su uso en simple Peque no Usa el shell como lenguaje

c GSyC 2007

Introducci on al shell : Editores de texto

wily/acme (cont.)

111

Inconvenientes Para usarlo de forma efectiva, hay que usar Unix de forma efectiva enlaces http://www.cs.bell-labs.com/sys/doc/acme/acme.html

c GSyC 2007

Introducci on al shell : Editores de texto

SciTE

112

SciTE
Editor de texto reciente Ventajas Muy completo: Da formato, color, se integra con el compilador... Versiones para Win32 y X Window Muy f acil de manejar Es el editor de anjuta, el IDE de gnome

c GSyC 2007

Introducci on al shell : Editores de texto

SciTE (cont.)

113

Inconvenientes Exige una sesi on gr aca No tan extendido como vim o emacs Hay cosas que vim o xemacs hacen mejor enlaces http://www.scintilla.org/SciTE.html

c GSyC 2007

Introducci on al shell : Editores de texto

Kate

114

Kate
Es el editor del escritorio KDE Ventajas Muy completo: Da formato, color, se integra con el compilador... Muy buen pretty printing Muy f acil de manejar

c GSyC 2007

Introducci on al shell : Editores de texto

Kate (cont.)

115

Inconvenientes Exige una sesi on gr aca No tan extendido como vim o emacs Hay cosas que vim o xemacs hacen mejor Es necesario tener instalado KDE (o al menos buena parte) No disponible en otras plataformas enlaces http://kate-editor.org/

c GSyC 2007

Introducci on al shell : Editores de texto

gedit

116

gedit

Editor de texto reciente, es el block de notas de gnome Ventajas Muy sencillo y f acil de manejar

c GSyC 2007

Introducci on al shell : Editores de texto

gedit (cont.)

117

Inconvenientes Exige una sesi on gr aca Ha mejorado mucho, pero sigue teniendo poca funcionalidad No hay motivo para usarlo si est a disponible kate o scite

c GSyC 2007

Introducci on al shell : Editores de texto

Anda mungkin juga menyukai