Uso de la consola Unix (Avanzado)
Una vez conocido el uso básico de la consola Unix vamos a aprender más comandos y detalles. Cualquier interfaz CLI se comporta de forma similar y todo es cuestión de practicar, practicar y practicar
Objetivos
- Adquirir total soltura con una consola Unix
- Conocer más comandos y ser capaz de aprender comandos nuevos
Clases
- Usar Varios Comandos
- Agrupar comandos: con ; y agrupando con llaves
- Comandos en más de una línea: poner \ (backslash)
- Salidas estándar (stdin, stdout, stderr): terminal
- Como funciona el flujo de datos en un programa unix
- Redireccionamiento
- Redireccionar las salidas:
- stdin: con <
- stdout: con > y >>
- sterr: anteponiendo un 2 a >
- Redireccionar stdout y stderr a un mismo archivo:
- > archivo 2>&1
- >& archivo
- Redireccionar salida de varios procesos: agrupar comandos con llaves, separados por ;
- Redireccionar las salidas:
- Tuberías / Pipelines
- Qué son y para qué sirven
- Conectan comandos (stdout de uno a stdin de otro)
- El operador es la barra vertical | . Hay que pulsar AltGr + 1 .
- Una tubería puede contener más de un | (varios comandos conectados)
- Ejemplos
cd ;ls; echo "hola $USER"; # Varios Comandos { cd ;ls; echo "hola $USER";} #Varios comandos como si fuera uno ls >& logs.txt # stdout y stderr a misma archivo ls -l | cut -f 1 -d ' ' | head -n 2 # Ejemplo tubería
- Trabajar con varios archivos y buscar patrones en texto
- Expansión de Archivos
- Metacaracteres (Operadores):
- * : varios caracteres
- ? : un caracter
- [rangos] : caracteres o rangos
Ejemplo: ls [abc].txt Equivalente (dependiendo) por ejemplo a: ls a.txt c.txt
- Expansión de Archivos (lista de caracteres entre llaves y separados por comas SIN espacios ).
Ejemplo: echo {tres,cuatro,cinco}coches Resultado: trescoches cuatrocoches cincocoches
- Metacaracteres (Operadores):
- Buscar caracteres en archivos de texto
- Es una herramienta básica para un administrador
- Comando Grep (Global Regular Expression Print): busca en los archivos de entrada las lineas que coincidan con el patrón de búsqueda
- Revisar las opciones (grep --help):
- -c (--count), -v (--invert-match), -i (--ignore-case), -o (--only-matching)
- -l (--files-with-matches), -n (--line-number), -R (--recursive)
- -A (--after-context=NÚM) , -B (--before-context=NÚM)
- Grep Manual
- Diferentes uso de expresiones Regulares (REGEXP):
- Basic REGEX (BRE):
-G ó --basic-regexp (es el valor predeterminado, no usa los metacaracteres ? + { } ( ) | ) - Extended REGEX (ERE):
-E ó --extended-regexp (también comando egrep, usa REGEX completa) - Fixed:
-F ó --fixed-string (también comando fgrep, no usa REGEX) - Es decir, puedo utilizar Basic vs Extended REGEX ( -G ó -E) o no utilizar REGEX (-F)
- Basic REGEX (BRE):
- Ejemplos: Grep Examples y Grep Usage
- Expansión de Archivos
- Control de Tareas y Procesos (Programas):
- Concepto de programa, proceso y/o tarea
- Concepto de Primer Plano (foreground) o Segundo Plano (background)
- Controlar tareas:
- Enviar a segundo plano:
- Añadir & al final del comando (al lanzarlo)
- comando bg %NUM_TAREA (sólo si está suspendido)
- Suspender Tarea: pulsar Ctrl+Z
- Traer a primer plano: fg %NUM_TAREA
- Ver Tareas (jobs) y ver Procesos (ps)
- Interrumpir Tarea: kill %NUM_TAREA ó kill PID ó pulsando Ctl+C (sólo si está en primer plano)
- Enviar a segundo plano:
- Ejemplos
# 2 Tareas en segundo plano y 1 suspendida # # muestra el número de tarea entre corchetes # cesareo@hostname:[~] $ jobs [1] Running /opt/gaim-beta/bin/gaim & [2]- Running yes >/dev/null & [3]+ Stopped emacs -nw # Trae al primer plano la tarea número 2 # cesareo@hostname:[~] $ fg %2 # Procesos Funcionando, se muestra PID # cesareo@hostname:[~] $ ps PID TTY TIME CMD 5727 pts/1 00:00:00 bash 26832 pts/1 00:00:03 gaim 2180 pts/1 00:00:38 yes 2186 pts/1 00:00:00 emacs 2258 pts/1 00:00:00 ps # Para interrumpir/eliminar el comando yes # # SOLO se utiliza una, pero valdría cualquiera de las dos # cesareo@hostname:[~] $ kill %2 cesareo@hostname:[~] $ kill 2180
- Buscar comandos y Archivos
- Buscar comandos instalados:
- Donde está un programa: whereis ó which
- Qué es un comando: whatis
- Qué tipo de archivo es: file
- Últimos comandos: history
- Buscar Archivos:
- Comando Find
- Funcionamiento: find ruta expresión
- Comando MUY potente (Revisar Manual)
- Ejemplos de opciones a revisar: -name PATRON_NORMAL, -regex REGEX, -size +TAMAÑO, -type TIPO, -user USER, -perm MODE
- Comando locate. Busca en una BD que hay que actualizar (comando updatedb)
- Comando Find
- Ejemplos:
#Muestra donde está el comando cesareo@localhost:[~] $ whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz #Muestra el tipo de archivo cesareo@localhost:[~] $ file /etc/network/interfaces /etc/network/interfaces: ISO-8859 text #Ejemplos de Búsquedas cesareo@localhost:[~] find ./ -name '*.txt' (...) cesareo@localhost:[~] find ./ -group staff (...) cesareo@localhost:[~] find ./ -size +30M -exec ls -lh {} \; (...) cesareo@localhost:[~] find /home/cesareo -regex '/home/cesareo/.*user' -a -type d
- Buscar comandos instalados:
- Comprimir y Empaquetar archivos
- Empaquetar/Desempaquetar
- Empaquetar NO es comprimir
- Empaquetar es construir un archivo con varios archivos (directorios)
- Se usa el comando tar
- Ejemplos:
#Crea el paquete ejemplo.tar con todos los archivos de /home/usario tar cvf ejemplo.tar /home/usuario #Desempaqueta ejemplo.tar en el directorio actual tar xvf ejemplo.tar
- Diferentes mecanismos (y comandos) de compresión/descompresión:
Tipo Comprimir Descomprimir GZIP
(Habitual)gzip gzip -d BZIP2
(Mejor)bzip2 -z bzip2 -d ZIP zip unzip RAR rar unrar - Todo a la vez: con tuberías o con opciones en tar:
#Empaqueta y comprime (GZIP, opción z) el directorio ./tmp tar cvfz ejemplo.tar.gz tmp #Desempaqueta y DEScomprime (BZIP2, opción j) en el directorio actual el paquete ejemplo_2.tar.bz2 tar xvfz ejemplo_2.tar.bz2
- Tutorial Breve
- Empaquetar/Desempaquetar
- Otros Comandos: alias, clear, setenv, export, mail, diff, halt, shutdown, reboot, etc
- Unix Commands Reference Card
- Index of Linux Commands
- Indiana University
- Linux One-Page Manual (PDF)
- 10 comandos para trabajar en consola
Duración del Curso
El esfuerzo estimado del curso es de 1 crédito ECTS. Unas 30 horas de dedicación.
Actividades
- Semana 1
- Repaso de comandos de GNU Utils y agrupación de comandos
- Utilizar los diferentes tipos de redireccionamiento
- Jugar con el uso de tuberías
- Expresiones Regulares y su uso con grep. Buscar 10 ejemplos de expresiones regulares (más de 5 caracteres).
- Semana 2
- Ejecutar varios procesos en una consola y gestionarlos
- Realizar búsquedas de comandos y archivos de forma compleja
- Semana 3
- Realizar compresión y empaquetamiento de archivos y directorios
- Realizar 100 ejercicios básicos (Archivo PDF 60 KB) sobre Linux. 100 preguntas básicas y Avanzadas
Recursos a Utilizar
- Las del curso de Uso básico de Consola profundizando en el uso de comandos.
- Linux Eminentemente Práctico
- Linux Command Directory
- Materiales Postgrado Software Libre UOC