Download - 01 practicas de laboratorio

Transcript

Practicas de Laboratorio

FP-UNA 2017

Introducción al Shell UNIX

Interfaz de usuario basada en caracteres con el sistemaoperativo tipo UNIX (Linux, AIX, SunOS, etc.)

Interacción con el usuario por línea de comandos

Salida de los programas basada en texto

Traduce las líneas de comandos en instrucciones del sistema operativo

UNIX es uno de los primeros SO en hacer la interfaz de usuario independiente del SO

Alcance:

– Interfaz de usuario

– Entorno de programación. Shell scripting.

Bourne Again Shell (BASH)

Origen:

– En 1978 Stephen Bourne desarrollo y distribuyoen la version del Sistema operativo Unix Version7.

– En 1987 Brian Fox escribió para el proyectoGNU sustituyendo al Bourne Shell por el BASH.

– En 1990 Chet Ramey renovó la versiónestableciendo como interprete predeterminadoen la mayoría de los sistemas GNU/Linux, MACOS X, Tiger y escalable en la mayoría de lossistemas operativos tipo unix

Bourne Again Shell (BASH)

Prestaciones más relevantes:

–Edición de la línea de comandos

–Control de trabajos

–Personalización de la shell

–Completo entorno de programación

Bash tiene como objetivo ser una

implementación conforme de la

especificación de Herramientas y Shell IEEE

POSIX (IEEE Working Group 1003.2).

Evolución de Internet

• Ficheros que lee bash cuando se arranca :

• 1./etc/profile

• 2.~/.bashrc, ~/.bash_profile, ~/.bash_login, and

~/.profile

• Más información sobre el bash:

• # man bash

Características de Linux

GNU/Linux (comúnmente Linux a secas) es uno más de los

muchos S.O. que existen en la actualidad que tiene una serie

de características que lo hacen especial: Libre: Se puede descargar de internet, copiar y distribuir sin que por ello se

incurra en ningún tipo de delito. La licencia que establece los términos de uso,

copia y distribución se denomina Licencia GNU (www.gnu.org)

Hecho por voluntarios: Linux no se creó para obtener beneficios con él sino

para satisfacer una serie de necesidades a la hora de trabajar con el ordenador.

Multiusuario: Varios usuarios pueden conectarse y usar el mismo ordenador a la

vez.

Multitarea: Pueden funcionar varios programas al mismo tiempo en la misma

máquina.

Multiplataforma: Hay versiones de Linux para gran cantidad de plataformas:

todos los PCs basados en procesadores Intel o AMD, ordenadores

Digital/Compaq con procesadores Alpha, ordenadores Apple, ultraportátiles como

el Asus Eee e incluso dispositivos móviles como el Sharp Zaurus.

Estable: Linux es un sistema operativo muy maduro, probado durante mucho

tiempo. Hay muchos servidores que llevan funcionando bajo Linux de forma

ininterrumpida muchos años sin un solo cuelgue.

Eficiente: Linux aprovecha bien los recursos hardware. Incluso los viejos

Pentium pueden funcionar bien con Linux y servir para alguna tarea.

Directorios más importantes de Linux:/bin Contiene programas ejecutables básicos para el sistema.

/boot Contiene los ficheros necesarios para el arranque del sistema.

/dev Contiene los ficheros correspondientes a los dispositivos

/etc Contiene ficheros y directorios de configuración.

/homeContiene los directorios de trabajo de los usuarios. Cada usuario tiene su

propio directorio en el sistema dentro de /home/.

/lib Contiene las librerías compartidas y los módulos del kernel

/media Dentro de este directorio se montan los dispositivos como el CD-ROM,

memorias USB, discos duros portátiles, etc

/opt Directorio reservado para instalar aplicaciones.

/sbin Contiene los ficheros binarios ejecutables del sistema operativo.

/srv Contiene datos de los servicios proporcionado por el sistema.

/tmp Directorio de archivos temporales.

/usr

Aquí se encuentran la mayoría de los archivos del sistema,

aplicaciones, librerías, manuales, juegos… Es compartido por todos los

usuarios.

/varContiene archivos administrativos y datos que cambian con frecuencia:

registro de errores, bases de datos, colas de impresión, etc.

/root Directorio de trabajo del administrador del sistema (usuario root).

/proc Aquí se almacenan datos del kernel e información sobre procesos.

Linux vs Unix

A nivel de línea de comandos, apenas hay diferencias. Se pueden usar

los mismos comandos indistintamente en distribuciones Linux o en

sistemas Unix.

A nivel gráfico tampoco hay mucha diferencia ya que ambos sistemas

utilizan X-Windows.

La principal diferencia es que Linux es libre mientras que la mayoría

de Unix no (a veces cuestan mucho dinero).

Otra diferencia importante es el hecho de que hay versiones de Linux

para prácticamente cualquier plataforma, mientras que los diferentes

Unix suelen estar enfocados a un hardware muy específico

Linux vs Windows

La principal diferencia, una vez más, es que Linux es libre

y, en la mayoría de los casos, gratis mientras que Windows

es un software propietario y requiere de licencia. De igual

manera, la gran mayoría de aplicaciones para Linux son

libres y gratuitas mientras que las aplicaciones para

Windows no lo son, aunque a veces es fácil encontrar

programas de evaluación (shareware) para Windows que

permiten probar un determinado programa durante un

tiempo de forma gratuita

¿QUÉ ES UNA DISTRIBUCIÓN

DE LINUX?

Una distribución de Linux es el sistema operativo propiamente dicho,

lo que se suele denominar el núcleo (kernel en inglés) junto con un

programa de instalación y un conjunto de aplicaciones, normalmente

de propósito general.

Distribución = Núcleo de Linux + Programa de instalación +

Aplicaciones

VIZUALIZACIÓN, CREACIÓN Y CAMBIO

DE DIRECTORIO (pwd, ls, cd, mkdir)

pwd

El comando pwd muestra cuál es el directorio de trabajo actual, en otras

palabras, le dice al usuario dónde se encuentra dentro de la estructura de

directorios del sistema. Es muy útil cuando estamos perdidos.

fpuna@fpuna-Virtualvox:~$ pwd

/home/fpuna

ls

El comando ls muestra el contenido del directorio actual. Por defecto,

los archivos ocultos no se muestran. Éste es seguramente el comando

que más se utiliza.

fpuna@fpuna-Virtualvox:~$ ls

VIZUALIZACIÓN, CREACIÓN Y CAMBIO

DE DIRECTORIO (pwd, ls, cd, mkdir)

Cd (change dir)

El comando cd (change dir) permite cambiar de directorio. Si se utiliza tal cual,

sin ningún tipo de argumento, cambia al directorio de trabajo personal. Si se

utiliza seguido de una ruta, cambia al directorio que se indica.

fpuna@fpuna-Virtualvox:~$ pwd

/home/fpuna

fpuna@fpuna-Virtualvox:~$cd /etcfpuna@fpuna-Virtualvox:/etc$ pwd

/etc

En este caso, el usuario estaba en su directorio de trabajo, y ha “saltado” al

directorio /etc. El lector puede teclear el comando ls si tiene curiosidad por ver lo

que hay dentro.

Las rutas pueden ser absolutas o relativas. Una ruta es absoluta cuando

comienza por el carácter “/” y relativa cuando comienza por cualquier otro

carácter

VIZUALIZACIÓN, CREACIÓN Y CAMBIO

DE DIRECTORIO (pwd, ls, cd, mkdir)

mkdir

Se pueden crear directorios con el comando mkdir. Por ejemplo, para crear

una estructura de carpetas donde un estudiante guardará información sobre

sus asignaturas según el siguiente esquema

/Documentos

/Escritorio

/Imágenes

/Música

/SO/examenes_antiguos

/home/fpuna /apuntes

/lcik /curso_03/Estructura

/Redes/libros_de_ejercicios

/videos

/informatica /compiladores_pascal

/Video

VISUALIZACIÓN DE FICHEROS

(cat, more, less, head, tail)

Los comandos cat, more y less sirven para mostrar el contenido

de ficheros de texto. La diferencia radica en cómo se muestra el

contenido. A todos estos comandos hay que pasarles como argumento

el fichero que se quiere mostrar. Se puede indicar una ruta, en caso de

que el fichero que se quiere mostrar no esté en el directorio actual.

El comando cat muestra por pantalla el contenido de un fichero y,

cuando termina, el usuario está otra vez de vuelta en la línea de

comandos.

Por ejemplo,~$ cat /var/log/dmesg

Muestra el contenido del archivo pero como es muy grande no podrá

visualizar desde el principio

VISUALIZACIÓN DE FICHEROS

(cat, more, less, head, tail)

El comando more hace lo mismo que cat, a diferencia de que muestra el

fichero pantalla a pantalla, es decir, llena de texto la pantalla y se espera a

que el usuario pulse la tecla <espacio> para pasar a la siguiente

~$ more /var/log/dmesg

El comando less es el más versátil de los tres, ya que permite moverse

hacia delante y hacia atrás dentro del fichero, utilizando los cursores o las

teclas de “AvPág” y “RePág”:

~$ less /var/log/dmesg

En cualquier momento se puede interrumpir la visualización y volver al

símbolo del sistema pulsando la letra “q”.

VISUALIZACIÓN DE FICHEROS

(cat, more, less, head, tail)

Los comandos head y tail permiten mostrar de forma parcial el

contenido de un fichero. Como su nombre indica, head muestra las

primeras líneas del fichero (la cabecera) y tail muestra las últimas líneas

(la cola).

Veamos algunos ejemplos

~$ head /boot/grub/grub.cfg

Les muestra las primeras líneas del texto

~$ tail /boot/grub/grub.cfg

Por defecto, tanto head como tail muestran 10 líneas, pero eso se puede

cambiar con la opción –n

~$ tail –n4 /boot/grub/grub.cfg

Desplegará las 4 ultimas lineas

Editores de ficheros(touch, vi,

joe,nano,gedit, mcedit)

El comando touch permite crear un fichero vacío. Con cualquier editor de

texto se puede crear un fichero vacío pero con touch es especialmente

cómodo y rápido.

~$ touch prueba.txt

Se puede ver en el ejemplo cómo se ha creado el archivo prueba.txt pero al

visualizar su contenido con cat, no aparece nada en pantalla, por tanto está

vacío.

Probar los editores citados (vi, joe,nano,gedit, mcedit)

Comandos Bash

Manejo de Directorios y Ficheros

• cp: copiar un fichero en otro o ficheros en un directorio

• cp [-R] [directorio/fichero origen] [directorio/fichero destino]

• rmdir: elimina un directorio (debe estar vacío)

• rmdir [nombre_directorio]

• rm: elimina un fichero

• rm [-r] [-f] nombre_fichero

Practiquemos

Crear en el directorio $HOME un directoriocon tu nombre. Utilizar el comando mkdir(comprobar la utilidad de la opción -p) paracrear los directorios y el editor de textos desu preferencia para crear los ficheros dentrola estructura de directorios …

Practiquemos1. /Home/FPUNA

a. Nombre del alumno

i. SO

1. File1

2. File 2

ii. Estructura

1. File1

2. File 2

iii.Redes

2. File1

1. File 2

i. Matemáticas

1. File1

2. File 2

RedirecciónPodemos redirigir la entrada, salida y el error estándar de

los mandatos.

mandato < fichero. En el mandato se usará fichero comoentrada y no el teclado. # cat < prueba

Mandato >fichero. La salida del mandato será enviada a fichero y no a la pantalla. # cal > prueba

Mandato 2> fichero. Los mensajes de error que un mandato puede generar también pueden ser redirigidos a un fichero, pero normalmente preferimos que se visualicepor pantalla.

mandato >> fichero. Añade la salida de mandato al final del fichero indicado.

Tuberías (pipe)

• Consiste en redirigir la salida estándar de un mandato

directamente a la entrada estándar de otro.

• ●No se crea ningún fichero intermedio.

• ●Se consigue separando los mandatos con el carácter

“|”(pipe).

• ●# ls -al /home | grep login_name

• ●# ls -al /home | wc -l

tar y gziptar es el empaquetador estándar de linux. Reune varios

ficheros en uno.

– # tar -cvf archivo.tar archivos_a_comprimir (para crear archivos tar).

– # tar -xvf archivo.tar (para desempaquetar un tar).

– # tar -tvf archivo.tar (muestra los archivosempaquetados).

gzip es el compresor estándar de linux, en general se usajunto a tar.

– # gzip -f archivo (para comprimirlo)

– # gzip -d archivo.gz (para descomprimirlo).

tar y gzip

• Empaquetando y comprimiendo a la vez.

– # tar -cvfz prueba.tar.gz /home/usuario/*

– # tar -xvfz prueba.tar.gz (previamentenos situamos)

Scripts

Scripts = Guiones.

Muy importantes desde el punto de vista del

Administrador.

Los servicios de Linux arrancan mediante scripts.

Permite:

• Construcciones de bucle

• Construcciones condicionales

• Funciones de shell

• Funciones built-in

Compilador GCC

El gcc es el compilador por excelencia con licencia

pública GNU. Es un compilador flexible y riguroso con el

estándar ansi C.

Proporcionamos al compilador un programa fuente y nos

devuelve un archivo binario compilado para nuestra

arquitectura

– # gcc [options] file.... Ejemplos hola.c Entrada.c

Para mas información man gcc

Opciones más comunes del gcc -o mediante esta opción podemos especificar el nombre del ejecutable

$gcc hola.c -o hola

-g incluye en el binario información necesaria para utilizar un depurador posteriormente.

-Wall No omite la detección de ningún warning.

-O <nivel> indica a gcc que utilice optimización en el código, posiblesvalores desde 0 a 3. Aumenta el tiempo de compilación.

-S Preprocesa y compila, pero no ensambla ni enlaza

-c Preprocesa, compila y ensambla pero no enlaza.

-L <dir> Especifica un directorio adicional donde gcc debe buscar laslibrerías necesarias en el proceso de enlazado.

-l <library> Especifica el nombre de una librería adicional que deberáser utilizada en el proceso de enlazado.

Compilando un programa C

Editando un programa

Con el editor de preferencia. Opción: gedit

• Compilando un programa:

# /usr/bin/gcc miprograma.c –o miprograma.exe

• Verificando y asignando permisos

# ls –l miprograma.exe

# chmod 755 miprograma.exe

• Ejecutando un programa:

# ./miprograma.exe

Compilación• Vamos a compilar el primer programa.

• # include <stdio.h>

• main()

• {

• printf(“hola, mundo\n”);

• }

# gcc hola.c -o hola

Debates

Actividades

Tarea 1: Cree un script que analizando los nodos de una carpeta que se le

pasa como parámetro, vaya imprimiendo el contenido y muestre solamente

los que no tienen extensión ".bkp"