Introducción a Linux
TSO
Linux
Linux
Linux
Linux
multiusuario
cada usuario debe tener un nombre (cuenta)
una clave de acceso (password)
login:
Cambio de CONTRASEÑA
Cambio de CONTRASEÑA
Cambio de CONTRASEÑA
Cambio de CONTRASEÑA
Las claves de acceso en algunos sistemas tienen un tiempo de vida limitado
El comando passwdcambia la clave de acceso.
$passwd
El sistema preguntará por su clave de acceso
anterior, luego pedirá la nueva clave de acceso dos veces.
El administrador del sistema también puede
cambiar y restringir el acceso a cualquier usuario.
REQUISITOS PARA LA CLAVE
REQUISITOS PARA LA CLAVE
REQUISITOS PARA LA CLAVE
REQUISITOS PARA LA CLAVE
La nueva clave de acceso debe cumplir con ciertos
requisitos que dependen de la versión y el tipo de UNIX, se recomienda:
(a) Por lo menos 6 caracteres
Salida del sistema
Salida del sistema
Salida del sistema
Salida del sistema
Existen muchas razones para salir del sistema
Estructura de Archivos
Estructura de Archivos
Estructura de Archivos
Estructura de Archivos
Los directorios están
organizados en una estructura de árbol llamado “file system”
Los archivos se organizan en subdirectorios.
/
bin usr
home
tso
Tarea1.c Tarea2.c
importantes
importantes
importantes
importantes
/ (root)El directorio raíz contiene toda la estructura de archivos de UNIX. /usr
(/home en linux) Es donde generalmente se encuentran los directorios domicilio de los usuarios.
/dev
Todos los archivos de dispositivos (drivers) /tmp
Aquí se guardan los archivos temporales que crean los programas que son ejecutados.
/lib Librerías del compilador
/bin
/bin
/bin
/bin
/binContiene las utilidades (archivos ejecutables) del sistema /usr/bin
El directorio incluye las utilidades estándar de UNIX y aplicaciones
/mnt
Vacío, utilizado por los dispositivos externos (floppy, CDROM)
/lost+found
Aquí va la información y los procesos que se estaban ejecutando cuando el sistema se cae
/etc
El interprete de comandos (Shell)
El interprete de comandos (Shell)
El interprete de comandos (Shell)
El interprete de comandos (Shell)
El prompt por default para el BourneShell es el signo de dólar ($).
$
nombre del programa /bin/sh
Archivo de configuración .profile En otros shells:
En csh : .login .cshrc .logout
En bash: .profile
.bashrc
SINTAXIS
SINTAXIS
SINTAXIS
SINTAXIS
<comando>
<opciones> <argumentos>
Para iniciar la ejecución del comando, se debe
presionar la tecla <ENTER>
<comando> nombre de un comando de LINUX.
El manual electrónico
El manual electrónico
El manual electrónico
El manual electrónico
$man <comando>
$man man #cómo usar el man
$man –k <comando> #todo lo relacionado con el <comando>
Listando archivos
Listando archivos
Listando archivos
Listando archivos
Un archivo oculto comienza con un punto, ls no lo
despliega.
para observar los archivos ocultos se utiliza el
comando :
$ls -a $HOME
man ls
man ls
man ls
man ls
ls -lista el contenido de un directorio
Synopsis
ls [-aAcCdfFgiILqrRstu1] filename
Opciones importantes:
-a Lista todos los archivos (incluso los ocultos). -t Ordena por fecha de creación.
-p Marca los directorios (/) -r Invierte el orden.
-s Indica el tamaño.
-l Formato largo. Indica protecciones, propietario, grupo, tamaño y fecha de creación de cada archivo.
-F Distingue entre archivos ordinarios, directorios “/” y ejecutables”*”
Metacaracteres
Metacaracteres
Metacaracteres
Metacaracteres
* empareja cualquier cadena de cero o muchos caracteres
? empareja un solo caracter
[abc... ] empareja cualquier caracter encerrado en corchetes.
Ejemplos
Ejemplos
Ejemplos
Ejemplos
$ls tarea? empareja con tarea1 tarea2,
tareax, pero no con tarea10 $ls [C-H]* empareja con todos los nombres
que comienzan con letras
mayúsculas desde C hasta H.
$ls [t]*.?
Prueba esto en la computadora: $ls .*
¿Qué muestra la máquina en la pantalla? ¿Qué regla se ha aplicado?
Entrada y Salida
Entrada y Salida
Entrada y Salida
Entrada y Salida
Todos los dispositivos (impresora) son considerados como archivos por UNIX.
REDIRECCIONAMIENTO (pipeline) Cuando se dá una instrucción a UNIX
puede indicársele que envíe el resultado a un dispositivo o archivos.
Esta desviación recibe el nombre de redireccionamiento de la salida.
/floppy
/hda
/tty01
Tuberías y filtros
Tuberías y filtros
Tuberías y filtros
Tuberías y filtros
Un tubo (pipe “>”) redirige la
salida de un programa para que se convierta en entrada de otro.
Un filtro “|” es un programa
elaborado para procesar un flujo de datos de entrada y producir otro de datos de salida.
UNIX permite el uso de tuberías y filtros en la línea de comandos.
Uso práctico:los tubos y filtros suelen usarse para enlazar utilidades y realizar alguna tarea específica
Límites (
Límites (
Límites (
Límites (quotes
quotes
quotes))))
quotes
; separador de comandos & ejecución en segundo plano ( ) agrupa comandos
| tubería
Ejemplos
Ejemplos
Ejemplos
Ejemplos
$who; ls
$(date;who;pwd) > actividad.log $(date;who;pwd) >> actividad.log $sort –r actividad.log | more $grep while master.c
$grep ‘while’ *.c
Comandos de manejo de archivos
Comandos de manejo de archivos
Comandos de manejo de archivos
Comandos de manejo de archivos
Camino (ruta)
/home/estudiante/NombreDeArchivo
Este es el camino
(path) filename
•Comando para ver el contenido para
archivos de texto solamente $more NombreDeArchivo
–Muestra el contenido de archivos en la
Copia y traslado (cp y mv)
Copia y traslado (cp y mv)
Copia y traslado (cp y mv)
Copia y traslado (cp y mv)
cp//Realiza copia de archivos y directorios
cp archivo_fuente archivo_destino
$cp /tmp/tarea /home/estudiante/tarea mv
//Traslada o cambia de nombre de un archivo.
$mv archivo_antiguo archivo_nuevo
ln
ln
ln
ln
Establece vínculos entre archivos.
$ln archivo1 archivo2
Los archivos 1 y 2 pasan a ser, físicamente, el mismo con dos nombres.
Borrado de archivos (rm)
Borrado de archivos (rm)
Borrado de archivos (rm)
Borrado de archivos (rm)
Borrado de archivos rm:
Opciones:
-i pregunta antes de borrar
-r borra un directorio de forma recursiva, borrando primero los archivos que están en él
¡cuidado con $rm -r * borra todo sin arrepentimiento!
Cambio de directorio
Cambio de directorio
Cambio de directorio
Cambio de directorio
Para saber donde está ubicado en el árbol use el
comando pwd $pwd
$cd nombre de archivo
Cambia al directorio denominado nombre. $cd ..
Cambia al directorio padre del actual. $cd Cambia al directorio domicilio (principal)
Operaciones con directorios
Operaciones con directorios
Operaciones con directorios
Operaciones con directorios
Crea un directorio $mkdir nombre
Borra un directorio (debe estar vacío)
$rmdir nombre
Si el directorio contiene archivos y se quiere borrar
todo usa el comando
$rm –r directorio
¡Tenga cuidado con este comando!
Seguridad de la información
Seguridad de la información
Seguridad de la información
Seguridad de la información
Los permisos de acceso son las protecciones
que se le pueden asignar a un archivo.
• Hay tres tipos de usuarios que pueden acceder
a un archivo :
u (user, owner) # el dueño del archivo. g (group) # el grupo al que
Despliegue de opciones
Despliegue de opciones
Despliegue de opciones
Despliegue de opciones
Listado de archivos en formato largo.
Al ejecutar la orden ls -l, se nos facilita la
información sobre las protecciones del archivo.
Interpretación de opciones
Interpretación de opciones
Interpretación de opciones
Interpretación de opciones
-rwx rwx rwx
El primer carácter indica el tipo de archivo:
- archivo ordinario. d Directorio.
b archivo especial tipo bloque. c archivo especial tipo carácter.
Los otros nueve caracteres expresan, en grupos de 3,
los permisos de acceso a ese archivo.
Ejemplo:
Ejemplo:
Ejemplo:
Ejemplo:
El propietario puede leer, escribir y ejecutar El grupo puede leer y ejecutar
El resto de usuarios no tiene ningún acceso
-r w xr – x
-u g o
chown y chgrp
chown y chgrp
chown y chgrp
chown y chgrp
chown propietario archivo
Cambia el propietario de un archivo (deberá ser
nuestro para poder hacer)
chgrp
un archivo
un archivo
un archivo
un archivo
chmod
actúa sobre el propietario (u), el grupo (g), otros
(o), añadiendo (+) o quitando (-) los permisos (rwx).
Por ejemplo:
chmod o+r archivo Se da permiso de lectura al resto de usuarios.
chmod g+wx archivo Se da permiso de escritura y ejecución al grupo.
chmod o-rwx archivo Se quitan todos los permisos al resto de usuarios.
protecciones en octal
protecciones en octal
protecciones en octal
protecciones en octal
Permisos en binario octal, significado: u g o
xxx xxx xxx
000 000 000 No se puede hacer
nada
001 000 000 El propietario puede ejecutar
Ejemplo
Ejemplo
Ejemplo
Ejemplo
111 111 111 777 Totalmente desprotegido
chmod –octal archivo
¿Que hace el siguiente comando? $chmod 650 archivo
Procesos
Procesos
Procesos
Procesos
Concepto:
Programa en ejecución Procesos:
Primer plano (foreground)
$fg
Procesos en primer plano
Procesos en primer plano
Procesos en primer plano
Procesos en primer plano
El usuario los inicia $gedit tarea1.c
Este comando inicia la edición del archivo tarea1.c en la ventana mediante la aplicación emacs, el usuario no puede correr otros comandos de UNIX mientras no salga del editor.
$history
Procesos en segundo plano
Procesos en segundo plano
Procesos en segundo plano
Procesos en segundo plano
El sistema operativo los inicia son de prioridad más baja
el usuario puede continuar trabajando ejecutando
otros comandos Ejemplo:
$gedit tarea1.c &
Identificador de proceso (PID)
Identificador de proceso (PID)
Identificador de proceso (PID)
Identificador de proceso (PID)
ps muestra información de la cantidad de tiempo que ha pasado desde que esa terminal ha tenido actividad, el identificador de procesos (PID) del proceso y otros.
ps -e Información de todo el sistema ps -l Formato largo
ps -f Información de los comandos que el sistema está procesando
Información de campos
Información de campos
Información de campos
Información de campos
UID: Número de identificación del usuario PID: Número de identificación del proceso
PPID: Número de identificación del proceso padre (aquel proceso que creó a éste)
PRI: Prioridad (cuanto más alto sea este número,
menor es la prioridad)
NI: Número "nice" (es la prioridad efectiva; sólo se puede subir o lo que es lo mismo, bajar la
prioridad)
TIME: Tiempo de CPU en min:seg
Ejemplo de ps
Ejemplo de ps
Ejemplo de ps
Ejemplo de ps
El comando Kill elimina un proceso
$kill PID
Ejemplo:
$kill 15564
¿Qué hace $kill -9 PID?
Conexiones remotas ( Conexiones remotas ( Conexiones remotas (
Conexiones remotas (Secure Shell: ssh Secure Shell: ssh Secure Shell: ssh Secure Shell: ssh ))))
Telnet es vulnerable a ataques de usuarios
maliciosos por que la transferencia de información a través de la red va sin codificar y cualquiera observando el tráfico de la red podría descubrir nuestras contraseñas
Es necesario saber nombre (host) o dirección IP
(dirección numérica) del sistema al que se quiere conectar y una cuenta
Comandos sftp parte
Comandos sftp parte
Comandos sftp parte
Comandos sftp parte
$sftp host (nombre o dirección IP)$ sftp>help
? dir ldelete mkdir quit user bell disconnect ldir open recv verbose bye get lls page rm cd hash lpwd prompt sort close help lrm put status delete lcd ls pwd timeout
open Establece una conexión con el servidor
user Cuando una conexión ya está abierta permite hacer un login en el servidor. Nos pedirá el password
bye Cierra la conexión con el servidor si había una conexión abierta y sale del programa sftp
put Copia un fichero de la máquina local a la máquina remota
get Copia un fichero de la máquina remota a la máquina local
Alias
Alias
Alias
Alias
#alias dir="ls "
07/09/09
HISTSIZE=10
#history
#!!
repetir
#!3
repetir el 3
#!gr
repetir el último que empiece por
gr
#cc !$
usar último argumento
#cc !*
usar últimos argumentos
Completar
xx<TAB>
~hoTAB
Completa home
Composición de instrucciones
Composición de instrucciones
Composición de instrucciones
Composición de instrucciones
Terminador secuencial: #date; who
Terminador paralelo:
#date & who
Agrupamiento:
#(date; who) | wc #(sleep 5; date) & date Los pipelines:
#grep -i fork tarea.c | wc -l & Continúa si no falla:
#grep -i fork tarea.c > temp && wc temp Continúa si falla:
#grep -i fork tarea.c> tareas || rm tareas Sustitución de salida estándar:
07/09/09
Patrones de ficheros
*
Cualquier cadena (excepto caracteres . al
principo y / en cualquier sitio)
? Cualquier carácter (excepto . y /)
[xyz] Enumeración de caracteres
[a-z]
Rango de caracteres
[a-zA-Z0-9]
Rangos de caracteres
[abcA-Z]
Enumeraciones y rangos
[!a]
negación
’ . . .’
empareja . . . exactamente
" . . ."
empareja . . . casi exactamente
(reemplaza variables)
Variables
Variables
Variables
Variables
mostrar todas: #set sustitución: $i $cosa
${cosa}s
(re)definición: #i=hola
#cosa=botella
Variables de ambiente (globales)
Variables de ambiente (globales)
Variables de ambiente (globales)
Variables de ambiente (globales)
Mostrar todas:
#env #printenv
exportación, con export:
#TEMP=/usr/local #export TEMP
Scripts (guiones)
Scripts (guiones)
Scripts (guiones)
Scripts (guiones)
#sh
script
# chmod +x
script
#script
Primer comentario del script debería especificar
la shell
07/09/09
Tarea:
Tarea:
Tarea:
Tarea:
Crea un archivo con estos comandos y ejecuta el shell con un argumento que debe ser un archivo
existente en el directorio actual. #!/bin/sh
ls -t | sed ’/^’$1’$/q’
Decisiones
Decisiones
Decisiones
Decisiones
case
case var in
patrón1) comandos1 ;;
patrón2) comandos2 ;;
07/09/09
if
if
if
if
if comando
then
comandos
elif comandos
then
comandos
else
comandos
fi
Ciclos
Ciclos
Ciclos
Ciclos
Repetición fija for var [ in p1 p2 . . . pn ] do
comandos done
ó
Ciclos
Ciclos
Ciclos
Ciclos
Mientras no fallen while órdenes
do órdenes done
Hasta que no fallen until órdenes
do
órdenes done
Funciones
Funciones
Funciones
Funciones
nombre-de-función () { comandos
Variables especiales
Variables especiales
Variables especiales
Variables especiales
$# número de argumentos $* todos los argumentos $@ idem....
$i argumento i-simo
$? valor de retorno de última instrucción $$ id-proceso de la shell
$! id-proceso de la última instrucción &
$PATH directorios de búsqueda de instrucciones $PS1 saludo principal ($)
$PS2 saludo secundario (>)
El comando test
El comando test
El comando test
El comando test
-f fichero fichero normal -d fichero directorio
-b fichero dispositivo de bloques -c fichero dispositivo de caracteres -h fichero un enlace simbólico -p fichero un pipe con nombre -w fichero escribible
-x fichero ejecutable -r fichero legible
El comando test para cadenas
El comando test para cadenas
El comando test para cadenas
El comando test para cadenas
-l cadena longitud de cadena -n cadena longitud no es cero -t salida estándar es terminal -t fd fd es terminal
-z cadena la longitud de cadena es cero s1 = s2 cadenas iguales
s1 != s2 cadenas distintas s1 s1 no es nula
El comando test para números y
El comando test para números y
El comando test para números y
El comando test para números y
expresiones
expresiones
expresiones
expresiones
n1 -eq n2
n1 = n2
n1 -ne n2
n1= n2
n1 -gt n2
n1 > n2
n1 -ge n2
n1 n2
n1 -lt n2
n1 < n2
n1 -le n2
n1 n2
! expr
negación de expr
e1 -a e2
y
Ejemplo
Ejemplo
Ejemplo
Ejemplo
#!/bin/bash
echo -n “ Desea salir?” read respuesta
case $respuesta in
[nN]*) echo "Ha dicho que no" ;; [yY]*j[sS]*) echo "Ha dicho que si" ;; *) echo "No entiendo" ;;
esac
Usando if
Usando if
Usando if
Usando if
#!/bin/bash
echo –n “desea salir?” read respuesta
if [ "$respuesta" = y ] then
echo "Ha dicho que si" elif [ "$respuesta" = n ] then
echo "Ha dicho que no" else
Los archivos más nuevos
ultimos () { ls () {
ls lrt tail -$1 }
# invocando
ultimos 5
Contar líneas de archivos
Contar líneas de archivos
Contar líneas de archivos
Contar líneas de archivos
#!/bin/sh
i=0 cat $1|
while read linea
do
i=‘expr $i + 1‘
echo "$i líneas en $1"
07/09/09
Con aritmética de bash
Con aritmética de bash
Con aritmética de bash
Con aritmética de bash
#!/bin/bash i=0
cat $1 |
while read linea do
i=$(($i+1))
echo"$i líneas en $1“ done | tail -1
Esperar a que exista
Esperar a que exista
Esperar a que exista
Esperar a que exista
#!/bin/sh until [ -f $1 ]
do
Echo "No veo el fichero $1“ sleep5
done
Señales
Señales
Señales
Señales
trap cmd sigcmd se ejecuta cuando sig. trap ’’ sig
ignora sig. trap sig
pone sig acción básica.
0 salida de shell 1 colgar
2 interrumpir ^C
3 interrupción con core ^\ 9 asesinar (inevitable, inatrapable) 13 escribe en pipe sin lector 15 terminación por programa (kill)
Variables
Variables
Variables
Variables
#!/bin/bash
Variables local
Variables local
Variables local
Variables local
Las variables locales pueden crearse utilizando la palabra clave local.
Variables Locales
Variables Locales
Variables Locales
Variables Locales
#!/bin/bash HOLA=Hola function hola {
local HOLA=Mundo echo $HOLA
}
echo $HOLA hola
Estructuras Condicionales
Estructuras Condicionales
Estructuras Condicionales
Estructuras Condicionales
#!/bin/bash
if [ “hola" = “Hola" ]; then
echo expresión evaluada como verdadera fi
echo expresión evaluada como falsa
Condicionales con variables
Condicionales con variables
Condicionales con variables
Condicionales con variables
#!/bin/bash E1=“Rosa" E2=“Risa"
if [ "$E1" = "$E2" ]; then
echo expresion evaluada como verdadera else
Ejemplo: comprobando si existe un fichero
Ejemplo: comprobando si existe un fichero
Ejemplo: comprobando si existe un fichero
Ejemplo: comprobando si existe un fichero
#!/bin/bash FILE=˜/.basrc if [ -f $FILE ]; then
echo el fichero $FILE existe else
echo fichero no encontrado fi
Los bucles for
Los bucles for
Los bucles for
Los bucles for
#!/bin/bash for i in ‘seq 1 10‘; do
Los bucles while
Los bucles while
Los bucles while
Los bucles while
contador=0 while test $# -gt 0 do
contador=`expr $contador + 1` echo Parametro $contador: $1 shift
done
Funciones
Funciones
Funciones
Funciones
#!/bin/bash function salir { exit
}
function hola { echo <Hola! }
hola salir
Leyendo información del usuario
Leyendo información del usuario
Leyendo información del usuario
Leyendo información del usuario
#!/bin/bash
echo Por favor, introduzca su nombre read NOMBRE
echo "<Hola $NOMBRE!"
Leyendo información del usuario
Leyendo información del usuario
Leyendo información del usuario
Leyendo información del usuario
#!/bin/bash
echo Por favor, introduzca su nombre y primer apellido
read NO AP
Operadores aritméticos
Operadores aritméticos
Operadores aritméticos
Operadores aritméticos
+ (adición) - (sustracción) * (producto) / (división) % (módulo)
Operadores relacionales aritméticos
Operadores relacionales aritméticos
Operadores relacionales aritméticos
Operadores relacionales aritméticos
Capturando la salida de un comando
Capturando la salida de un comando
Capturando la salida de un comando
Capturando la salida de un comando
#!/bin/bash ruta=`pwd`
echo ruta