Comienza Contenido

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

  1. Usar Varios Comandos
    1. Agrupar comandos: con ; y agrupando con llaves
    2. Comandos en más de una línea: poner \ (backslash)
    3. Salidas estándar (stdin, stdout, stderr): terminal
    4. Como funciona el flujo de datos en un programa unix
    5. Redireccionamiento
      1. Redireccionar las salidas:
        • stdin: con <
        • stdout: con > y >>
        • sterr: anteponiendo un 2 a >
      2. Redireccionar stdout y stderr a un mismo archivo:
        • > archivo 2>&1
        • >& archivo
      3. Redireccionar salida de varios procesos: agrupar comandos con llaves, separados por ;
    6. Tuberías / Pipelines
      1. Qué son y para qué sirven
      2. Conectan comandos (stdout de uno a stdin de otro)
      3. El operador es la barra vertical | . Hay que pulsar AltGr + 1 .
      4. Una tubería puede contener más de un | (varios comandos conectados)
    7. 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
      	      
  2. Trabajar con varios archivos y buscar patrones en texto
    1. 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
        		  
    2. 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)
      • Ejemplos: Grep Examples y Grep Usage
  3. 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)
    • 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
      	      
  4. 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)
    • 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
      	      
  5. 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
  6. Otros Comandos: alias, clear, setenv, export, mail, diff, halt, shutdown, reboot, etc
  7. Unix Commands Reference Card
  8. 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

Recursos a Utilizar