Google
Web dns.bdat.net

Shell de linux

Una guía básica

Pedro Pablo Fábrega Martínez

Aviso Legal
Tabla de contenidos
Introducción al Unix
Historia de Unix
Cronología
Versiones de Unix
El sistema de ficheros
Tipos de sistemas de ficheros
El sistema de ficheros Unix
Entrando a un sistema Unix
Iniciando una conexión
Iniciando una sesión
La base de datos de los usuarios
La shell
Metacaracteres de la shell
Entrada y salida estándares y de errores
Organización del almacenamiento en disco
Árbol de directorios
Rutas de acceso a ficheros y directorios
Nombres de ficheros y directorios
Plantillas para nombres de ficheros
Ruta de un fichero
Ruta absoluta
Ruta relativa
Propietarios y Permisos
Propiedad
Permisos
Órdenes
Ejecución de una orden
Obtener información
Notación sobre órdenes
Órdenes para ficheros y directorios
Orden cat: Mostrar el contenido de un fichero
Orden ls: Mostrar el contenido de un directorio
Comentarios:
Ejemplos prácticos de ls:
Orden less: Mostrar un fichero de texto
Comentarios:
Orden mkdir: Crear un directorio
Orden rm: Borrar un fichero o directorio
Comentarios:
Orden cd: Cambia el directorio activo
Usos especiales de cd
Orden mv: Mueve o renombra ficheros
Orden cp: Copia ficheros y directorios
lpr Imprime un fichero
Orden pwd: Imprimir el directorio actual
Orden ln: Enlaza ficheros o directorios
Ejercicios con solución
Mostrar el contenido de todos los ficheros del directorio personal.
Copiar el fichero .profile en otro llamado perso.
Crear un directorio llamado prueba en nuestro directorio personal.
Expresar las rutas absoluta y relativa del directorio prueba que acabamos de crear. (Relativa al directorio actual).
Copiar el fichero /home/usuario/perso en el directorio prueba.
Cambiar al directorio /home/usuario/prueba
Copiar el fichero perso del directorio /home/usuario/prueba con el nombre perso.nuevo
Estando en el directorio prueba, copiar el fichero .profile en él con el nombre prof.nuevo
Crear un enlace simbólico llamado pro1, al fichero prof.nuevo.
Verificar el enlace simbólico pro1 que acabamos de crear
Crear un enlace duro llamado prof.d1, al fichero prof.nuevo.
Crear otro enlace enlace duro llamado prof.d2, al fichero prof.d1.
Borrar el fichero prof.d1 y verificar los demás
Crear un directorio dentro de prueba llamado src.
Comprimir, descomprimir y agrupar ficheros
Comprimir ficheros y uso de ficheros compromidos
gzip
gunzip
zcat
zless
bzip2
bunzip2
zip
unzip
Agrupar y desagrupar ficheros: tar
Agrupar ficheros
Agrupar ficheros y comprimir
Desagrupar ficheros
Desagrupar ficheros y descomprimir
Ejercicios resueltos
Hacer una copia de seguridad del directorio /home
Otras órdenes de usuario
Orden id: Información sobre el usuario
Orden passwd: Modifica la clave
Orden man: obtener información
Orden who: información sobre usuarios conectados
orden whoami: información sobre el usuario
Orden write: envía un mensaje a un usuario
orden mesg: activa/desactiva la recepción de mensajes
orden mail: envía un mensaje de correo electrónico
Orden date: muestra las hora y fecha actuales
Orden echo: muestra en pantalla el resto de la línea
orden sort: ordenar el contenido de un fichero
Orden more: muestra un fichero en pantalla
Orden cal: muestra un calendario
Orden expr: evalúa una expresión entera
Orden diff: muestra diferencias entre ficheros
find Localiza ficheros
Orden ps: muestra lista de procesos
Orden sleep: genera un proceso durante cierto tiempo
Orden stty: parámetros del terminal
Orden head: muestra las primeras línea de un fichero
tail: Muestra las últimas línea de un fichero
Orden touch: actualiza las fechas de un fichero
Orden tty: muestra el terminal
Orden wc: cuenta información sobre ficheros
Ejemplos
Gestión de procesos
introducción
Operaciones con procesos
Operaciones con procesos en primer plano
Procesos en segundo plano
Orden kill: envío de señales a procesos
Orden killall
Gestión de trabajos
Orden fg (foreground): traer a primer plano
Orden bg (background): continuar en segundo plano
Orden jobs: mostrar lista de trabajos
orden kill %: eliminar un trabajo
nohup
Entrada y salida
Dispositivos estándares
Otros dispositivos
Discos duros IDE
Discos flexibles
Puertos serie
Otros dispositivos
Redirección
Tuberías o pipes
Uniendo órdenes
orden tee: extrae la salida estándar
Ejercicios
Expresiones regulares
Introducción
Definición
Como pueden servir la expresiones regulares
Metacaracteres de expresiones regulares
Definiciones de carácter
Ejemplos:
Clases
Literales
Metacarácter como literal
Cuantificadores
Anclajes
Ejemplos
Alternativas
Construyendo expresiones regulares: ejemplos
Sintaxis de fecha del tipo dd/mm/aa
Dirección de correo electrónico
Referencias
Modos de búsqueda
Ejemplos
Tratamiento de ficheros de texto
Orden grep: buscar en un fichero
Ejemplos
Orden egrep: busca en una lista de ficheros
Orden sed: editor no interactivo
Ejemplos
Orden cut: corta texto
Ordenes spell, aspell: corrector ortográfico
Permisos y propietarios
Propiedad
Orden chown: cambia el propietario
Orden chgrp: cambia el grupo de un fichero o directorio
Permisos
chmod
Ejercicios
Los bits SUID y SGID
El sticky bit
umask
Ejercicios:
Shell
Definiciones
Variables de shell
Variables de entorno
Ficheros ejecutables
Shell y subshell
Cerrar una shell
Variables exportadas
Las comillas en la shell
Personalización de la shell
El editor vi
Intoducción
Modos de trabajo
Terminales
Salir de vi
Introducir texto (ir a modo edición)
Borrar
Desplazamientos
Búsquedas y sustituciones
Otras órdenes
Ejecución y agrupación de órdenes
Código de terminación de una orden
Ejecución consecutiva
Ejecución condicional
Operador &&
Operador ||
Ejecución simultánea
Agrupando con paréntesis
Resultado de la ejecución de una orden
El operador $()
Programas de shell
subshell
Comentarios y continuaciones de línea
Parámetros posicionales
Modificación de los parámetros posicionales
La sentencia shift
Operador {}
Variables predefinidas
Variable $*
Variable $(EN)
Variable $#
Variable $?
Variable $$
Variable $!
Uso de valores predeterminados de variables
Uso de variable no definida o con valor nulo
Uso de variable no definida
Uso de variable definida o con valor nulo
Uso de variable no definida
Asignación de valores predeterminados de variables
Asignación a variable o definida o con valor nulo
Asignación a variable no definida
Mostrar un mensaje de error asociado a una variable
Variable no definida o con valor nulo
Variable no definida
Otras operaciones con variables
Subcadenas de una variable
Cortar texto al principio de una variable
Cortar texto al final de una variable
Evaluación aritmética
Selección de la shell de ejecución
Lectura desde la entrada estándar: read
Evaluación de expresiones: test
Estructura de control
Sentencia if
Sentencia while
Sentencia until
Sentencia for
Sentencias break y continue
Sentencia case
Terminar un programa de shell (exit)
Opciones en un programa de shell: getopts
Evaluación de variables: eval
Funciones
Trucos de programación en shell
Script con número variable de argumentos:
Script para aplicar una serie de órdenes a cada fichero de un directorio
Leer un fichero de texto línea a línea
Cambiar una secuencia de espacios por un separador de campos
Ejemplos prácticos
Realizar una copia de seguridad incremental:
Sustituir una palabra por otra en un conjunto de ficheros del directorio activo
Reemplazar todos los ?#abcdef? qu estén comprendidos entre <table y > por ?#ccccff?.
Prácticas: ejercicios propuestos
Ejercicios resueltos sobre ficheros y directorios
Guion de shell que genere un fichero llamado listaetc que contenga los ficheros con permiso de lectura que haya en el directorio /etc:
Hacer un guion de shell que, partiendo del fichero generado en el ejercicio anterior, muestre todos los ficheros del directorio /etc que contengan la palagra ?procmail?: