Está en la página 1de 171

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 1
INTRODUCCIÓN A SISTEMAS OPERATIVOS
• Capa de software que permite gestionar los recursos de una
computadora para ejecutar programas y proporcionar servicios al
usuario.
• Software que permite simular una computadora
(cpu, memoria, disco, dispositivos, etc.)
sobre un equipo informático.

Windows

Software de Linux
Virtualización
SISTEMA
OPERATIVO
Android

DOS
• Descargar DVD instalación de Linux
• Instalar VirtualBox
• Crear máquina virtual
• Instalar SO en máquina virtual
• Consola
• Entorno Gráfico
• El proceso de login permite a los usuarios acceder al sistema
mediante la verificación del nombre usuario y contraseña

• Usuarios: Administrador (root), usuarios comunes y usuarios


especiales
• Es posible navegar a través de las terminales del sistema
pulsando una combinación de teclas.

...

F1
CTRL ALT F2
F3 ... ??
• El prompt (símbolo de petición o símbolo de sistema) es la
interfaz del intérprete de comandos (capa del SO) que recibe las
órdenes del usuario.

nombre_usuario @ nombre_equipo : dir_actual $

root @ mipc : /etc #

juan @ minetbook : /home/juan/Docs $


• Al ejecutar un comando debe especificarse su nombre, opciones y
parámetros o argumentos. Algunos comandos pueden ejecutarse
indicando únicamente su nombre.

nombre_comando [-opciones] [parámetros]

whoami
uname -r
ls –l /etc
cp –r /home/user/pdf /home/user/new
• El intérprete de comandos cuenta con herramientas para obtener
ayuda acerca de los comandos
 help (opción de algunos comandos)
 whatis (descripción breve de un comando)
 man (manual del sistema)
 apropos (busca un comando por su descripción)

alumno@debian:~$ date -–help


alumno@debian:~$ whatis date
alumno@debian:~$ man date
alumno@debian:~$ apropos “copy”
• Mostrar fecha y hora del sistema
alumno@debian:~$ date
• Mostrar el nombre del equipo
alumno@debian:~$ hostname
• Mostrar el nombre del usuario (actual)
alumno@debian:~$ whoami
• Borrar la pantalla
alumno@debian:~$ clear
• lscpu, dmidecode, cat /proc/cpuinfo
Muestran información acerca del procesador
• lspci, lsusb, lsblk, free, fdisk
Muestran información acerca de dispositivos del sistema
• whoami, who, w, logname
Muestran información acerca de los usuarios del sistema
• lsmod, history, dmesg, uptime
Muestran información acerca del funcionamiento del
sistema
• Comandos para reiniciar/apagar el sistema
 reboot (reiniciar el sistema)
 poweroff (apagar el sistema)
 shutdown (reiniciar/apagar el sistema)

root@debian:~# reboot
root@debian:~# poweroff
root@debian:~# shutdown –r now
root@debian:~# shutdown –h now
• Comandos para reiniciar/apagar el sistema
 shutdown (reiniciar/apagar el sistema)

root@debian:~# shutdown –r +10


root@debian:~# shutdown –h +10
root@debian:~# shutdown –r 22:30
root@debian:~# shutdown –h 22:30
root@debian:~# shutdown –c
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 2
SISTEMA OPERATIVO GNU/LINUX
• Sistema operativo libre,
multiusuario, multitarea.
 Permite que sus usuarios lo
estudien (acceso al código
fuente), copien, modifiquen,
y usen libremente.
 Soporta múltiples usuarios
conectados.
 Soporta múltiples tareas
para cada usuario.
• Consola (terminal de texto)
• Entorno Gráfico
Usuario común sudo Superusuario
Usuario: alumno Usuario: root
Contrseña: alumno
• Al ejecutar un comando debe especificarse su nombre, opciones y
parámetros o argumentos. Algunos comandos pueden ejecutarse
indicando únicamente su nombre.

nombre_comando [-opciones] [parámetros]

w
uptime -p
dmidecode –t 0
shutdown –h 21:45
• El intérprete de comandos cuenta con herramientas para obtener
ayuda acerca de los comandos
 help (opción de algunos comandos)
 whatis (descripción breve de un comando)
 man (manual del sistema)
 apropos (busca un comando por su descripción)

alumno@debian:~$ sleep -–help


alumno@debian:~$ whatis uptime
alumno@debian:~$ man free
alumno@debian:~$ apropos “downloader"
• $cal 9 2022
• $date +%D
• $whoami
• $hostname
• $uname -r
• $uptime
• $lscpu
• $ping 127.0.0.1
• sleep • lastb

• yes • wget

• wall • dmidecode

• history • shutdown
• ¿Cómo mostrar los primeros 5 meses del año 2022?
• ¿Cómo suspender la terminal por 20 segundos?
• ¿Cómo mostrar repetidamente el mensaje “APU forever”?
• ¿Cómo mostrar a los usuarios el mensaje “LSOI 2022”?
• ¿Cómo modificar el nombre del equipo por “Zeus”?
• ¿Cómo mostrar los 5 últimos comandos utilizados?
• ¿Cómo mostrar los intentos de conexión fallidos?¿De
alumno?
• ¿Cómo mostrar información del procesador?
• ¿Cómo mostrar fecha y hora del sistema?
• ¿Cómo sólo la fecha del sistema?
• ¿Cómo sólo la hora del sistema?
• ¿Cómo reiniciar el equipo en 25 minutos?
• ¿Cómo cancelar el reinicio?
• ¿Cómo apagar el equipo ahora?
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 3
SISTEMA DE ARCHIVOS
• Un archivo es una secuencia
de bytes que representan
información.
 Nombre de archivo
 Tipo
 Propietario
 Tamaño
 Permisos
 Fecha de creación/modificación
• Es el componente del sistema
operativo encargado de
organizar el almacenamiento y
recuperación de datos
(archivos) en las unidades de
almacenamiento.
 NTFS (Windows)
 Ext3, Ext4 (GNU/Linux)
 FAT16, FAT32 (DOS, Windows)
• / Raíz del sistema
 home: contiene los directorios de los usuarios del sistema.
 root: contiene los archivos del administrador.
 etc: contiene los archivos de configuración del sistema.
 bin (/usr/bin): contiene los binarios (comandos) básicos.
 sbin (/usr/sbin): contiene los binarios (comandos) del
administrador.
 boot: contiene los archivos de arranque del sistema.
 tmp: contiene los archivos temporales
 dev: contiene los archivos asociados a dispositivos
 ...
• Símbolos especiales

 Directorio Actual: . (refiere al directorio de trabajo)

 Directorio Padre: .. (refiere al directorio padre del


directorio de trabajo)

 Directorio Personal: ~ (refiere al directorio personal


del usuario actual)

 Directorio Raíz: / (refiere al primer directorio del


sistema)
• Relativa
 Indica la ubicación de un
archivo respecto al directorio 4221580
actual.
• Absoluta Jujuy Depto Alumnos
FI - UNJu
 Indica la ubicación de un
archivo a partir del
directorio raíz del sistema.

54-388-4221580

España Depto Alumnos


FI - UNJu
• Árbol de directorios Rutas Absolutas
/ Archivo: passwd

home / etc / passwd

alumno Archivo: tp3.txt


tp3.txt
apuntes / home / alumno / tp3.txt
unidad1.pdf
docente
pacial1.ods Archivo: unidad1.pdf
recup1.ods
etc / home / alumno / apuntes / unidad1.pdf
passwd
host.conf
proc
cpuinfo
• Árbol de directorios Rutas Relativas
/ Directorio Actual: alumno
Archivo: unidad1.pdf
home
/ apuntes / unidad1.pdf
alumno
tp3.txt Directorio Actual: apuntes
apuntes
unidad1.pdf Archivo: tp3.txt
docente
pacial1.ods . . / tp3.txt
recup1.ods
etc
passwd Directorio Actual: docente
host.conf Archivo: host.conf
proc
cpuinfo . . / . . / etc / host.conf
apuntes
• Directorios
 ls
 cd
 mkdir
 rmdir
• Archivos
 cp
 mv
 rm
• Muestra el espacio de almacenamiento usado por un directorio (y
todo su contenido) o un archivo.

ls [-opciones] archivo/directorio

Algunas opciones
-l listado en formato extendido
-i muestra el número de inodo
-r listado en orden inverso
-t listado por fecha
-a listado de todos los archivos incluso ocultos
-S listado por tamaño
-R listado recursivo (directorios y subdirectorios)
• Permite listar el contenido de un directorio.

ls [-opciones] [directorios]

alumno@debian:~$ ls Listado del directorio personal de alumno (~)

alumno@debian:/usr/bin$ ls -l Listado extendido del dir. /usr/bin

alumno@debian:~$ ls –l /etc Listado extendido del directorio etc


Listado del directorio
alumno@debian:~$ ls –li /etc/init.d init.d en formato extendido
y con números de i-nodo
• Permite desplazarse (cambiar) entre directorios

cd [directorio]

alumno@debian:/etc$ cd Cambia al directorio personal del usuario

alumno@debian:/usr/bin$ cd ~ Cambia al directorio personal del usuario

alumno@debian:~$ cd .. Cambia al directorio padre del dir. actual


Cambia al padre del padre del
alumno@debian:/etc/init.d$ cd ../.. actual
alumno@debian:~$ cd /etc/init.d Cambia al directorio init.d
• Permite crear directorios en las rutas especificadas.

mkdir directorios

alumno@debian:~$ mkdir lso Crea el directorio lso en /home/alumno


alumno@debian:~$ mkdir lso/tps Crea el directorio tps en /home/alumno/lso
alumno@debian:~$ mkdir lso/teoria lso/parcial Crea los dir. teoria y parcial
alumno@debian:/etc$ mkdir ~/lso/tps/nuevo Crea el directorio nuevo
alumno@debian:~$ mkdir –p lso/apuntes/unidad1 Crea dir. apuntes y unidad1
alumno@debian:~$ mkdir lso/tps/{tp1,tp2} Crea los dir. tp1 y tp2 en tps
• Permite eliminar directorios vacíos.

rmdir directorios

Borra el directorio
alumno@debian:~$ rmdir /home/alumno/lso/teoria teoría si está vacío
alumno@debian:~$ rmdir apuntes/2022 Borra directorio 2022 (vacío)
de /home/alumno/apuntes
alumno@debian:~$ rmdir –p uno/dos/tres Borra el directorio tres y sus
directorios padres si éstos
quedan vacíos
• Permite copiar archivos y/o directorios. También puede renombrar
los archivos copiados.
cp [-opciones] [ruta_origen] [ruta_destino]

• Copiar archivos
cp ruta_origen/archivo ruta_destino
• Copiar y renombrar
cp ruta_origen/archivo ruta_destino/nombre_nuevo
• Copiar directorios
cp –r ruta_origen/directorio ruta_destino
proc
• Copiar archivo
alumno@debian:~$ cp /etc/host.conf apuntes

• Copiar y renombrar
alumno@debian:~$ cp /etc/passwd apuntes/user.txt

• Copiar directorio
alumno@debian:~$ cp –r /etc/init.d ./ host.conf
user.txt
• Permite mover archivos y/o directorios. También puede renombrar
archivos y directorios.
mv [ruta_origen] [ruta_destino]

• Mover archivos/directorios
mv ruta_origen/archivo ruta_destino
• Renombrar
mv ruta_original/archivo ruta_original/nombre_nuevo
• Mover y renombrar directorios
mv ruta_origen/directorio ruta_destino/nombre_nuevo
• Mover archivo
alumno@debian:~$ mv lso/datos.txt lso/tps

• Renombrar archivo/directorio distro.txt


alumno@debian:~$ mv lso/linux.doc lso/distro.txt
datos.txt

• Mover y renombrar archivo/directorio


alumno@debian:~$ mv lso/tps/tp1.txt lso/parcial/ej1.txt

ej1.txt
• Permite eliminar archivos y/o directorios.

rm [–opciones] [ruta_arch/dir]

• Eliminar archivo
rm ruta_datos/archivo
• Eliminar directorio
rm –r ruta_datos/directorio
• Eliminar archivo
alumno@debian:~$ rm lso/datos.txt

• Eliminar directorio
alumno@debian:/home$ rm –r alumno/lso/parcial
• Listar el contenido del directorio etc
• Listar en formato extendido del directorio bin
• Listar el contenido de etc ordenado por fecha
• Invertir el orden del listado anterior
• Cambiar del directorio ~ al directorio etc
• Cambiar del directorio ~ al directorio home
• Cambiar del directorio de dispositivos del sistema al
directorio del administrador
• Crear la siguiente estructura de
directorios
• Copiar el archivo hostname y host.conf (de
etc) al directorio ingreso
• Copiar el archivo passwd (de etc) al
directorio lso1 con el nombre copia.doc
• Copiar el directorio ingreso a docentes
• Mover el archivo copia.doc al directorio
hi2
• Cambia el nombre del archivo hostname (de
alumnos/ingreso) por equipo.doc
• Mover el directorio init.d (de etc) al
directorio docentes
• Mover el directorio alumnos al directorio
materias
• Borrar el directorio ed
• Borrar el archivo host.conf (de docentes)
• Borrar el directorio alumnos
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 4
SISTEMA DE ARCHIVOS
• Los comodines son caracteres
especiales que permiten
reemplazar uno o más
caracteres en el nombre de un
archivo o directorio.
 ?: reemplaza 1 carácter
cualquier
 [0-9], [e,t,z]: reemplaza 1
carácter especificado en un
rango o de una lista.
 *: reemplaza varios caracteres
(cualquier)
• ¿Cómo se pueden listar los archivos con extensión gz del
directorio /var/log?
alumno@debian:/etc$ ls ../var/log/*.gz
• Dados los archivos dato1.txt, dato2.txt, dato3.txt, datoA.txt y
datoB.txt de ~, ¿cómo podrían moverse al directorio ~/Linux?
alumno@debian:~$ mv ./ dato?.txt Linux
• Dados los archivos dato1.txt, dato2.txt y dato3.txt ¿cómo podrían
eliminarse del directorio ~/Linux?

alumno@debian:~$ rm Linux/dato[1-3].txt
• Contenido de archivos • Información de archivos
 cat, more, less o directorios
 head  file
 tail  du
 wc • Búsqueda de archivos
• Creación de archivos  find
 touch
 nano
• Permite listar el contenido de un archivo. Si se indican 2 más
archivos se muestra el contenido concatenado de éstos.

cat [-opciones] archivos


• Permite listar el contenido de un archivo de forma paginada.

more [-opciones] archivos


• Permite listar el contenido de un archivo y desplazarse (avance y
retroceso) en él.

less [-opciones] archivos


• Mostrar el contenido del archivo passwd del directorio /etc.

alumno@debian:~$ cat /etc/passwd


• Mostrar el contenido de los archivos passwd y group del
directorio /etc

alumno@debian:~$ cat /etc/passwd /etc/ group

• Mostrar el contenido del archivo motd del directorio /etc,


incluyendo el número de línea.

alumno@debian:~$ cat -n /etc/ motd


• Permite mostrar la primera parte (caracteres o líneas) del
contenido de un archivo.

head [-opciones] archivos


• Permite mostrar la última parte (caracteres o líneas) del
contenido de un archivo.

tail [-opciones] archivos


• Permite determinar la cantidad de líneas, palabras o caracteres
que contiene un archivo.

wc [-opciones] archivos
• Mostrar las 3 primeras líneas del archivo modules del directorio
/etc.

alumno@debian:/etc$ head -n 3 modules

• Mostrar las 7 últimas líneas del archivo group del directorio


/etc.

alumno@debian:~$ tail -n 7 /etc/ group

• Determinar la cantidad de líneas del archivo motd del directorio


/etc.

alumno@debian:/home$ wc -l ../etc/ motd


• Permite crear archivos vacíos y modificar la fecha de acceso o
modificación de archivos

touch [-opciones] [yyyymmddhhmm] archivos


• Permite crear y editar archivos de texto simple
nano archivos
Combinaciones de teclas
• ALT + A para iniciar/cancelar la selección de texto
• ALT + 6 para copiar texto seleccionado (por defecto copia la línea actual)
• CTRL + U para pegar texto copiado
• CTRL + K para cortar texto seleccionado (por defecto corta la línea actual)
• ALT + < o > para desplazarse entre archivos abiertos
• CTRL + O para guardar
• CTRL + X para salir
• Crear los archivo vacíos mi_archivo.txt y mi_apunte.doc

alumno@debian:~$ touch mi_archivo.txt mi_apunte.doc

• Editar el archivo mi_apunte.doc guardando el texto:


“Este es mi primer archivo de texto simple en Linux”

alumno@debian:/etc$ nano ../home/alumno/mi_apunte.doc


• Permite determinar de qué tipo es un archivo.

file archivos
• Permite calcular el espacio ocupado (tamaño en KB, MB, GB) de un
archivo o directorio.
du [-opciones] archivos
Algunas opciones
• -s muestra información resumida
• -h muestra los tamaños en KB, MB, GB
• -b muestra tamaños en bytes
• -k muestra tamaños en KB
• -m muestra tamaño en MB
• Determinar el tipo de los archivos sr0 (/dev) y passwd (/etc)

alumno@debian:~$ file /dev/sr0 /etc/passwd

• ¿Cuál es el tamaño del archivo passwd del directorio /etc?

alumno@debian:/var$ du ../etc/passwd
• ¿Cuál es el tamaño del directorio /lib?

alumno@debian:~$ du -sh /lib


• Permite obtener la ubicación (ruta) de archivos o directorios en
el sistema de archivos a partir de un directorio especificado.

find dir_busq [-opciones criterio_busq]

Algunas opciones
• -type indica el tipo de archivo buscado
• -name indica el nombre del archivo buscado
• -atime indica el rango de fecha acceso buscado
• -mtime indica el rango de fecha modificación buscado
• -size indica el rango de tamaño de archivo buscado
• -empty indica que se buscan archivos o directorios vacíos
• -user indica que se buscan los archivos o directorios de un usuario específico
• Buscar el archivo cron en el directorio /etc

alumno@debian:~$ find /etc -name “cron”

• Buscar los archivos del directorio /var/log modificados en las


últimas 24 horas

alumno@debian:/etc$ find /var/log -mtime -1

• Buscar los archivos que pertenezcan al usuario messagebus

alumno@debian:~$ find / -user messagebus


Algunas observaciones para el TP
• ¿Cómo se lista archivos
cuyo nombre empiece con
determinados caracteres?
• ¿Cómo se convierte un
archivo en oculto?
• ¿Cómo se concatena 2 o más
archivos?
• ¿Cómo se busca un archivo
por tamaño?
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 5
PERMISOS
• Protección basada en contraseñas
 La conexión con contraseña garantiza que sólo los usuarios
registrados accedan al sistema y a los datos que les
pertenecen.
• Protección basada en encriptación
 La encriptación consiste en transformar la información
contenida en un archivo haciéndolo ilegible para quien no
conozca la clave de encriptación.
• Protección basada en permisos de acceso
 Consiste en definir derechos de acceso a los datos en
relación a propietario, los miembros del mismo grupo y
cualquier otro usuario del sistema.
• Sobre archivos y directorios pueden definirse permisos de
 Lectura (r, read)
 Escritura (w, write)
 Ejecución (x, execution)

r: permite leer el
archivos

contenido del archivo


w: permite modificar el
contenido del archivo
x: permite ejecutar las
instrucciones almacenadas
en un archivo
• Sobre archivos y directorios pueden definirse permisos de
 Lectura (r, read)
 Escritura (w, write)
 Ejecución (x, execution)

r: permite listar el
directorios

contenido del directorio


w: permite modificar el
contenido del directorio
x: permite acceder al
directorio (cd)
• ¿Cómo podemos ver los permisos de archivos o directorios?

propietario grupo otros propietario grupo


• Los permisos para trabajar con archivos y directorios pueden
especificarse en 2 formatos

Simbólico (alfabético) Binario Octal


_ _ _ 0 0 0 0
_ _ x 0 0 1 1
_ w _ 0 1 0 2
_ w x 0 1 1 3
r _ _ 1 0 0 4
r _ x 1 0 1 5
r w _ 1 1 0 6
r w x 1 1 1 7
• Los permisos de lectura, escritura o ejecución definidos sobre un
archivo o directorio pueden ser modificados usando el comando
chmod

chmod [-opciones] [permisos] archivos


Algunas opciones
• -R indica que los permisos definidos serán aplicados a un directorio y todo su
contenido
• u indica que se definirán permisos para el propietario
• g indica que se definirán permisos para los miembros del grupo al que pertenece el
propietario
• o indica que se definirán permisos para cualquier otro usuario del sistema Linux
• a indica que se definirán permisos para el propietario, grupo y otros
• ugo ídem al anterior
• Asignar permisos (=)
Propietario: Sólo ejecución
Grupo: Sólo escritura
alumno@debian:~$ chmod u=x,g=w ~/tp05.pdf Otros: no se modifica

• Agregar permisos (+)


Propietario: agrega ejecución
alumno@debian:~$ chmod u+x,o+wx ~/dos.pdf Grupo: no se modifica
Otros: agrega escritura y ejecución

• Quitar permisos (-) Propietario: quita ejecución


Grupo: quita ejecución
alumno@debian:~$ chmod a-x ~/uno.pdf Otros: quita ejecución

alumno@debian:~$ chmod ugo-x ~/uno.pdf Propietario: quita ejecución


Grupo: quita ejecución
Otros: quita ejecución
• Asignación de permisos

alumno@debian:~$ chmod 365 ~/tp05.pdf


Propietario: 3 es _wx (escritura y ejecución)
Grupo: 6 es rw_ (lectura y escritura)
Otros: 5 es r_x (lectura y ejecución)

alumno@debian:~$ chmod 41 ~/dos.pdf


Propietario: 0 es _ _ _ (ninguno)
Grupo: 4 es r_ _ (lectura)
Otros: 1 es _ _x (ejecución)
alumno@debian:~$ chmod 2 ~/uno.pdf
Propietario: 0 es _ _ _ (ninguno)
Grupo: 0 es _ _ _ (ninguno)
Otros: 2 es _w_ (escritura)
• ¿Cómo asignar permisos a varios archivos?
Propietario: no se modifica
chmod o=x ~/uno.txt ~/dos.pdf ~/tres.dat Grupo: no se modifica
Otros: sólo ejecución

Propietario: sólo ejecución


chmod 101 ~/*.txt Grupo: ningún permiso
Otros: Sólo ejecución

• ¿Cómo asignar permisos a un directorio y a todo su contenido?


Propietario: sólo lectura y ejecución
chmod -R u=rx,g=x,o= ~/Documentos Grupo: sólo ejecución
Otros: ningún permiso

chmod -R 510 ~/Descargas Propietario: sólo lectura y ejecución


Grupo: sólo ejecución
Otros: ningún permmiso
• Cree en el directorio personal del usuario alumno el archivo
vacío mis_datos.txt. ¿Qué permisos tiene?
• Edite el archivo mis_datos.txt y agregue la frase: “Jugando con
permisos”
• Quite el permiso de lectura (sólo al propietario) del archivo e
intente mostrar su contenido por pantalla o editarlo.
• Restaure el permiso de lectura y quite el permiso de escritura de
mis_datos.txt. Intente modificar el contenido del archivo
reemplazando la cadenta por “date”.
• Restaure el permiso de escritura, realice el cambio solicitado en
el ítem anterior e intente ejecutar el archivo.
• En formato octal asigne todos los permisos al propietario, sólo
ejecución al grupo y sólo ejecución a otros.
• Cree, en el directorio personal del usuario, el directorio tp5.
¿Qué permisos tiene?
• Copie a tp5 los archivos de /etc con extensión conf. Liste el
contenido del directorio y cree el archivo vacío nuevo.txt
• Quite el permiso de lectura (a todos los usuarios) de tp5 e
intente listar su contenido y crear el directorio copia.
• Restaure el permiso de lectura y quite el permiso de escritura de
tp5. Copie el archivo passwd de /etc a tp5.
• Restaure el permiso de escritura y realice la copia solicitada.
• En formato octal asigne a todos los usuarios sólo los permisos de
lectura y escritura. Intente determinar el tamaño del directorio
y renombrar el archivo passwd como usuarios.dat
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 6
EMPAQUETADO Y COMPRESIÓN DE ARCHIVOS
• Información de archivos o directorios
 stat
• Fechas de Acceso y Modificación
 touch
• Creación de Enlaces
 ln
• Empaquetado y Compresión
 tar
 gzip
• Muestra el estado de un archivo o sistema de archivos.

stat [-opciones] archivos/directorios


• Mostrar la fecha de acceso y modificación del archivo passwd del
directorio /etc

alumno@debian:~$ stat /etc/passwd

• Mostrar la fecha de acceso y modificación de los directorios


/home/alumno y /usr/bin

alumno@debian:~$ stat /home/alumno /usr/bin


• Permite crear archivos vacíos y cambiar la fecha de acceso o
modificación de archivos

touch [-opciones] [yyyymmddhhmm.ss] archivos

Algunas opciones
• -a indica que se cambiará la fecha de acceso del archivo
• -m indica que se cambiará la fecha de modificación del archivo
• -t indica la fecha y hora que será utilizada para el cambio
• -d indica la fecha que será utilizada para el cambio
• Cambie la fecha de acceso del archivo ~/tp05.pdf por 21/09/22

alumno@debian:~$ touch –a –d 20220921 ~/tp05.pdf


alumno@debian:~$ touch –a –d “2022-09-21” ~/tp05.pdf
• Cambie la fecha de modificación del archivo ~/uno.pdf por
31/07/22 18:11:43

alumno@debian:~$ touch –m –t 202207311811.43 ~/uno.pdf


alumno@debian:~$ touch –m –d “2022-07-31 18:11:43” ~/uno.pdf
• Permite crear enlaces fijos (duros) o enlaces simbólicos
(blandos) para hacer referencia a otros archivos.

ln [-s] archivo_original archivo_enlace


Enlace
Simbólico tp05.txt Archivo
Original
link.sym

link.fijo Enlace
Fijo
• Crear en el directorio ~/apuntes un enlace fijo, llamado
enlace.lnk, al archivo notas.txt del directorio alumno.
alumno@debian:/etc$ ln ~/notas.txt ~/apuntes/enlace.lnk

• Crear en el directorio ~ un enlace simbólico, llamado link.sym,


al archivo notas.txt del directorio alumno.
alumno@debian:~$ ln -s /home/alumno/notas.txt ~/link.sym

• Crear en el directorio ~ un enlace simbólico, llamado config.sym,


al directorio /etc.
alumno@debian:~$ ln -s /etc ~/config.sym
• Permite generar archivos empaquetados/comprimidos, ver su
contenido o extraer los datos que contiene.

tar [-opciones] [parametros]

Algunas opciones
• -c indica que se creará un archivo empaquetado o comprimido
• -t indica que se listará el contenido del archivo empaquetado o comprimido
• -x indica que se extraerá el contenido del archivo empaquetado o comprimido
• -z indica que el archivo se comprimirá
• -v indica que se mostrará información de los archivos empaquetados o comprimidos
• -f indica el nombre del archivo empaquetado o comprimido
• -C indica en qué directorio se extraerá el contenido del archivo emp. o comprimido
• Crear archivo empaquetado

alumno@debian:~$ tar -cvf arch_tar datos_origen

• Listar el contenido de archivos emapaquetados

alumno@debian:~$ tar -tvf arch_tar

• Extraer el contenido del archivo empaquetado

alumno@debian:~$ tar -xvf arch_tar [-C dir_destino]


• Crear archivo comprimido

alumno@debian:~$ tar -czvf arch_tar.gz datos_origen

• Listar el contenido de archivos comprimidos

alumno@debian:~$ tar -tzvf arch_tar.gz

• Extraer el contenido del archivo comprimido

alumno@debian:~$ tar -xzvf arc_tar.gz [-C dir_destino]


• Permite comprimir archivos (individuales), ver información del
archivo comprimido o extraer su contenido.

gzip [-opciones] archivos

Algunas opciones
• -n siendo n un valor entre 1 y 9 que indica el factor de compresión
• -k indica que se conservará el archivo original tras la compresión
• -d indica que se realizará la descompresión del archivo
• -l indica que se muestre información acerca de la compresión del archivo
• Crear archivo comprimido

alumno@debian:~$ gzip [-n][-k] arch_original

• Descomprimir archivo comprimido

alumno@debian:~$ gzip -d arch_gz

• Mostrar información del archivo comprimido

alumno@debian:~$ gzip -l arch_gz


FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 7
REDIRECCIONAMIENTO, FILTROS Y TUBERÍAS
• ¿Cómo operan los comandos?
 Los comandos como cualquier otro programa utilizan datos de
entradas que son procesados y transformados en información
de salida.

? ?
Normal
ENTRADA SALIDA
Error
Parámetros del comandos Dispositivos
Dispositivos Archivos
Archivos
• Cada vez que se ejecuta un comando el Kernel abre automáticamente
los siguientes archivos
 Entrada Estándar (stdin) Descriptor 0
 Salida Estándar (stdout) Descriptor 1
 Salida de Error Estándar (stderr) Descriptor 2

stdout
stdin COMANDO
stderr
• Se reemplaza la entrada estándar (teclado) por otro dispositivo
(por ejemplo, un archivo)

comando < archivo_entrada

stdout
stdin COMANDO
stderr
• Ejemplo: El comando tee permite que la entrada de datos realizada
por teclado se muestre en pantalla y se almacene en los archivos
especificados.

tee arch_salida_1 arch_salida_2 … arch_salida_n

• Utilizando redireccionamiento de entrada y el comando tee, genere


los archivos prueba1.txt prueba2.txt y prueba3.txt con el
contenido del archivo passwd del directorio etc.

tee prueba1.txt prueba2.txt prueba3.txt < /etc/passwd


• Se reemplaza la salida estándar (pantalla) por otro dispositivo
(por ejemplo, un archivo)

comando > archivo_salida


comando >> archivo_salida

stdout
stdin COMANDO
stderr
• Ejemplo: El comando head permite mostrar las n primeras líneas de
uno o varios archivos de texto simple.

head –n cant_lineas archivo

• Utilizando redireccionamiento de salida y el comando head, genere


en ~ el archivo usuarios.txt con los 5 primeros usuarios del
archivo passwd del directorio etc.

head -n 5 /etc/passwd > ~/usuarios.txt Crea usuarios.txt

head -n 5 /etc/passwd >> ~/usuarios.txt Agrega datos a


usuarios.txt
• Se reemplaza la salida de error estándar (pantalla) por otro
dispositivo (por ejemplo, un archivo)

comando 2> archivo_salida_error


comando 2>> archivo_salida_error

stdout
stdin COMANDO
stderr
• Ejemplo: El comando find permite buscar archivos en el sistemas
de archivos devolviendo las ubicaciones (rutas) correspondientes.

find directorio_busq [-opciones] patrón_busqueda

• Utilizando redireccionamiento de salida de error y el comando


find, guarde los mensajes de error del comando en el archivos
~/errores.dat. Considere que se buscará en todo el sistema el
archivo fstab.

find / -name fstab 2> ~/errores.dat Crea errores.dat

find / -name fstab 2>> ~/errores.dat Agrega datos a errores.dat

¿Cómo eliminar la salida de error?


• Es posible combinar las distintas formas de redireccionamiento al
ejecutar un comando.

comando < archivo_entrada > archivo_salida

comando < archivo_entrada 2> archivo_salida_error

comando > archivo_salida 2> archivo_salida_error


comando > archivo_salida 2>&1
comando 2> archivo_salida_error >&2
• Es posible encadenas comandos para realizar tareas complejas que
un único comando no puede resolver.

stdout stdout stdout


stdout
COMANDO COMANDO COMANDO COMANDO
stdin stdin stdin

• Formato

Comando_1 | comando_2 | comando_3 | … | comando_n


• Los comandos que pueden conectarse mediante tuberías reciben en
nombre de filtros y se caracterizan por trabajar con la entrada
(stdin) y salida (stdout) estándar.

• cat • cut
• more • paste
• grep, egrep, fgrep • sort
• wc • uniq
• head • tee
• tail
• Permite buscar una cadena (patrón regular) en uno o más archivos
y muestra las líneas que la contienen.

grep [-opciones] “cadena” archivo

Algunas opciones
-i ignora diferencias entre mayúsculas y minúsculas
-n muestra los números de líneas donde aparece la cadena buscada
-w busca la cadena como una palabra
-c cuenta las líneas que contienen la cadena buscada
-v muestra las líneas que no coincidan con la cadena buscada
-e permite indicar 2 o más cadenas a buscar
^ indica que sólo se muestren las líneas que empiecen con la cadena
$ indica que sólo se muestren las líneas que terminen con la cadena
• Permite mostrar secciones de uno o más archivos.

cut [-opciones] archivo

Algunas opciones
-f especifica las columnas que serán “extraídas”
-d especifica el carácter separador de columnas a considerar
• Ordenar el contenido de un archivo de acuerdo a un campo
específico. Por defecto ordena por el primer campo.

sort [-opciones] archivo

Algunas opciones
-k especifica la columna por la se realizará la ordenación
-t especifica el carácter separador de columnas a considerar
-n ordena considerando un campo numérico (por defecto se toma ASCII)
-u elimina los líneas repetidas
-r orden inverso
• ¿Cuántos archivos ordinarios contiene el directorio personal del
usuario?
alumno@debian:~$ ls -lR ~ | grep ^”-” | wc -l

• Considerando las líneas del archivo /etc/group que contengan la


palabra “alumno”, ordénelas de forma creciente.

alumno@debian:~$ grep “alumno” /etc/group | sort

• ¿En cuántos directorios se encuentra el archivo hostname?

alumno@debian:~$ find / -name “hostname” 2> /dev/null | wc -l


• Muestre la cantidad de caracteres de las primeras 5 líneas del
archivo passwd del directorio etc. ¿Cómo podría guardar el
resultado obtenido en el archivo ~/salida.txt?
alumno@debian:~$ head -5 /etc/passwd | wc -c > ~/salida.txt

• Muestre los últimos 10 usuarios (nombre e id) del archivo passwd


del directorio /etc.
alumno@debian:~$ tail -10 /etc/passwd | cut –f1,f3 –d “:”

• Modifique el comando anterior de modo que los usuarios se ordenen


por id.
$ tail -10 /etc/passwd | cut –f1,f3 –d “:” | sort –k2 –t “:” -n
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 8
PROCESOS
• Un proceso es un programa que se ha cargado en memoria, tiene
asignados recursos y cuyas instrucciones son ejecutadas por el
procesador.
• En Linux un proceso se crea cada vez que se ejecuta una orden
externa o un programa de aplicación.
• ¿Cómo se ejecutan los procesos?

PROCESO
PROCESO PROCESO 4
1 3
Usuario 1
PROCESO PROCESO
2 5

Usuario 3

PROCESO
6

Usuario 2
• Un proceso puede encontrarse, en un momento dado, en alguno de
los siguientes estados:

EN DISCO

LISTO EJECUCIÓN

ZOMBIE
EN ESPERA
• Un proceso en primer plano es aquel que toma control de la
terminal hasta finalizar su ejecución impidiendo la introducción
de más órdenes.
alumno@debian:~$ yes “hola mundo”

• Un proceso en segundo plano es aquel que una vez iniciado


devuelve el control de la terminal en la que se ejecuta,
permitiendo que el usuario continúe ingresando instrucciones. Un
proceso en segundo plano recibe un número de tarea.

alumno@debian:~$ yes “hola mundo” > /dev/null &


• Listar procesos • Pausar, reanudar o terminar
 ps procesos
 pgrep  CTRL + Z

 pstree  CTRL + C

 top  kill

 jobs  fg
 bg
• Modificar prioridades
 nohup
• nice
 fuser
• renice
• Permite listar los procesos que se ejecutan en el sistema.

ps [-opciones] [id_proceso]

Algunas opciones
-e, -A muestra todos los procesos que se están ejecutando
-ax,-aux muestra todos los procesos que se están ejecutando
-l muestra, en formato extendido, información de los procesos
-u muestra los procesos de un usuario
u muestra la salida en formato usuario
• Permite obtener el id de un proceso conociendo su nombre.
pgrep nombre_proceso
• Muestra el árbol de procesos
pstree
• Muestra de forma dinámica el listado de procesos
top
• Muestra los procesos que se ejecutan en segundo plano

jobs
• Es posible modificar la prioridad de un proceso mediante los
comandos nice y renice.

• Permite iniciar un proceso con un valor específico de prioridad.


Por defecto la prioridad será 0.

nice –n [-20,19] comando


• Permite modificar la prioridad de un proceso que ya se está
ejecutando.

renice –n [-20,19] id_proceso


• Los procesos que se ejecutan en primer plano pueden ser pausados
o finalizados mediante combinaciones de teclas:

pausa un proceso

finaliza un proceso
• Permite enviar señales a los procesos.

kill [-señal] id_proceso


kill [-señal] id_tarea
• Algunas señales
 -9 (SIGKILL): finaliza o termina un proceso
 -18 (SIGCONT): reanuda la ejecución de un proceso pausado
 -19 (SIGSTOP): pausa la ejecución de un proceso
 -l lista las señales que kill puede enviar a los procesos
• El comando fg permite reanudar (en primer plano) un proceso que
se encuentra pausado, o enviar a primer plano un proceso que se
ejecuta en segundo plano.
fg id_tarea
• El comando bg permite reanudar (en segundo plano) un proceso que
se encuentra pausado.
bg id_tarea
• El comando nohup permite mantener la ejecución de un comando
aunque se cierre la terminal desde dónde se ejecutó.

nohup comando
• El comando fuser permite identificar procesos a partir de
archivos o sockets.

fuser [-opciones] ruta/nombre_archivo

• La opción –k de fuser permitirá finalizar el proceso asociado al


archivo indicado. Por ejemplo, el siguiente comando permite
finalizar el proceso asociado al archivo especificado.

fuser –k /dev/ttyNum
• La ejecución de procesos en serie permite especificar una
secuencia de comandos, separados por comas, que se ejecutarán uno
a continuación de otro (cada uno por un proceso).

find / -name group 2> /dev/null ; hostname ; uname –r ; cal 10 2021


Proceso 1 Proceso 2 Proceso 3 Proceso 4
• La ejecución de procesos en paralelo permite especificar un
conjunto de comandos, separados por ampersand, que se ejecutarán
todos en simultáneo (cada uno por un proceso).

find / -name group > /dev/null & hostname & uname –r & cal 10 2021
Proceso 1 Proceso 2 Proceso 3 Proceso 4
• La ejecución agrupada de procesos permite que 2 o más comandos
sean ejecutados por un mismo proceso.

( find / -name group > /dev/null ; hostname);(uname –r ; cal 10 2021 )


Proceso 1 Proceso 2
• Los operadores && y || pueden utilizarse para especificar la
ejecución condicional de comandos.

comando1 && comando2

comando1 || comando2
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 9
SCRIPTS
Comandos (ls, mkdir, tar, ps, gep)

Shell Bash Modificables


(Intérprete Variables
de Comandos) No Modificables

Programas
Lenguaje de Programación
(Scripts) Secuenciales
Estructuras
Selectivas
de Control
Repetitivas
• Las variables de entorno o variables de la Shell permiten
configurar el sistema definiendo valores para la ejecución de los
distintos procesos.
• Ejemplo: PATH, HOME, LANG, USER, PWD
• Variables no modificables
 $0 (nombre del comando o programa que se ejecuta)
 $1 - $9 (parámetros de un comando o programa)
 $*, $@ (todos los parámetros de un comando o programa)
 $# (cantidad de parámetros de un comando o programa)
 $$ (id del proceso actual)
 $? (resultado del último comando, correcto o incorrecto)
 $! (id del proceso en segundo plano más reciente)
• Crear de variables
nombre_variable=valor
• Listar variables
env (sólo variables de entorno)
set, typeset, declare (todas)
• Eliminar variables
unset nombre_variable
• Acceder al contenido de variables

$nombre_variable
• Por defecto, las variables de entorno son de tipo cadena de
caracteres. No obstante, pueden definirse variables de tipo
entero.
typeset o declare usuario
typeset o declare directorio=“/home/alumno”
typeset o declare –i num1 num2 suma=0
• Las variables pueden definirse como de sólo lectura
typeset o declare –r tp=“tp10”
• Las variables pueden exportarse para ser usadas por subprocesos
typeset o declare –x materia=“lsoi”
• Secuenciales
 echo
 read
• Selectivas
• if
• case
• Repetitivas
• for
• while
• until
• El comando echo permite presentar en pantalla una cadena de
caracteres o el contenido de una variable.

echo [-opciones] [texto,variable]


• El comando read permite capturar la entrada del usuario.

read [-opciones] nombre_variable


• Editar el archivo
alumno@debian:~$ nano ejemplo1.sh

• Agregar permisos de ejecución

alumno@debian:~$ chmod u+x ejemplo1.sh


• Ejecutar el script

alumno@debian:~$ ./ejemplo1.sh
• Codifique un script que muestre por pantalla el mensaje “APU 2008
– LSOI 2022”.
#!/bin/bash
echo “APU 2008 – LSO I 2022”

• Codifique un script que muestre una cadena ingresada por el


usuario.
#!/bin/bash
echo –n “Ingrese cadena: ”
read frase
echo “Frase ingresada: ” $frase
• Codifique un script que sume 2 valores ingresados por el usuario.
#!/bin/bash
declare –i num1 num2 suma
echo “Ingrese numero: ”
read num1
read –p “Ingrese numero: ” num2
suma=$num1+$num2
echo “suma: ” $suma
• Los parámetros posicionales permiten identificar los argumentos
que acompañan a un comando o un script al ejecutarse.

alumno@apu2008:~$ cp /etc/passwd /home/alumno/usuario.txt

$0 $1 $2

$0 cp (nombre del programa)


$1-$9 /etc/passwd ($1), /home/alumno/usuario.txt ($2)
$*,$@ /etc/passwd /home/alumno/usuario.txt (todos los argumentos)
$# cantidad de argumentos: 2
• Modifique el ejemplo 2 de modo que la suma se realice usando
parámetros.
#!/bin/bash
declare –i suma
suma=$1+$2
echo “suma: ” $suma
• El comando if permite verificar una condición elegir entre 2
caminos alternativos de acción.

if [ condición ]; then
acciones
fi

if [ condición ]; then
acciones
else
acciones
fi
• Las estructuras selectivas pueden anidarse.
if [ condición_1 ]; then
acción_1
else
if [ condición_2 ]; then
acción_2
fi
fi

if [ condición_1 ]; then
acción_1
elif [ condición_2 ]; then
acción_2
fi
• Operadores lógicos
 Negación (not): !
 Conjunción (and): -a, &&
 Disyunción (or): -o, ||

if [ cond1 –a cond2 ];
if [ cond1 –o cond2 ];
if [ cond1 ] && [ cond2 ];
if [ cond1 ] || [ cond2 ];
• Operadores numéricos • Operadores de archivos
 -eq (igual)  -e (existe)
 -ne (distinto)  -d (directorio)
 -lt (menor que)  -f (archivo ordinario)
 -le (menor o igual)  -r (tiene permiso lectura)
 -gt (mayor que)  -w (tiene permiso escritura)
 -ge (mayor o igual)  -x (tiene permiso ejecución)
 -s (tamaño mayor que cero)
• Operadores de cadenas
 -L (archivo simbólico)
 = (igual)
 != (distinto)
 -n (cadena no nula)
 -z (cadena nula)
• Modifique el ejemplo 3 de modo que se verifique que se cuenta con
suficientes parámetros para realizar la suma.
#!/bin/bash
declare –i suma
if [ $# -eq 2 ]; then
suma=$1+$2
echo “suma: ” $suma
else
echo “error de parámetros”
fi
• Codifique un script que compare 2 valores, pasados por
parámetros, y muestre el mayor. ¿Qué ocurre si los valores son
iguales?
#!/bin/bash
if [ $1 –gt $2 ]; then
echo “el mayor es ” $1
else
echo “el mayor es ” $2
fi
• Codifique un script que determine si un parámetro es un archivo
ordinario y si además tiene tamaño mayor que cero.
#!/bin/bash
if [ -f $1 ]; then
if [ -s $1 ]; then
echo $1 “archivo ordinario, tamaño mayor que
cero”
else
echo $1 “archivo ordinario y vacío”
fi
else
echo $1 “no es un archivo ordinario”
fi
• Codifique un script que busque una cadena en un archivo,
considere que ambos pasados por parámetros. Si la búsqueda
resulta exitosa muestre el mensaje “Cadena encontrada”, caso
contrario presente el mensaje “Deberás seguir buscando”.
#!/bin/bash
grep –i $1 $2 > /dev/null
if [ $? –eq 0 ]; then
echo “Cadena encontrada”
else
echo “Debes seguir buscando”
fi
• El comando case permite elegir entre n caminos alternativos de
acción.

case $valor_variable in
op_1) acciones_1
;;
op_2) acciones_2
;;
op_3) acciones_3
;;
*) otra_acción
;;
esac
• Codifique un script que presente un menú con las siguientes opciones: a)
Mostrar el nombre del usuario, b) Mostrar el tamaño del directorio del
usuario, c) Mostrar los procesos de la terminal actual (formato largo).
#!/bin/bash
echo “a) Mostrar usuario”
echo “b) Mostrar tamaño de directorio personal”
echo “c) Mostrar procesos del usuario”
read –p “Ingrese opción: ” op
case $op in
a|A) whoami
;;
b|B) du –sh ~
;;
c|C) ps -l
;;
*) echo “error de opcion”
;;
esac
FACULTAD DE INGENIERÍA
UNIVERSIDAD NACIONAL DE JUJUY

TRABAJO PRÁCTICO N° 10
SCRIPTS (2)
Comandos (ls, mkdir, tar, ps, gep)

Shell Bash Modificables


(Intérprete Variables
de Comandos) No Modificables

Programas
Lenguaje de Programación
(Scripts) Secuenciales
Estructuras
Selectivas
de Control
Repetitivas
• Las variables de entorno o variables de la Shell permiten
configurar el sistema definiendo valores para la ejecución de los
distintos procesos.
• Ejemplo: PATH, HOME, LANG, USER, PWD
• Variables no modificables
 $0 (nombre del comando o programa que se ejecuta)
 $1 - $9 (parámetros de un comando o programa)
 $*, $@ (todos los parámetros de un comando o programa)
 $# (cantidad de parámetros de un comando o programa)
 $$ (id del proceso actual)
 $? (resultado del último comando, correcto o incorrecto)
 $! (id del proceso en segundo plano más reciente)
• Secuenciales
 echo
 read
• Selectivas
• if
• case
• Repetitivas
• for
• while
• until
• El comando for permite repetir un conjunto de acciones un número
definido de veces o de acuerdo a una lista de datos.

for((i=0;$i<=$variable;i=$i+1))
do
acciones
done

for nombre_variable in lista_datos


do
acciones
done
• Codifique un script que calcule el producto mediante sumas de 2
valores ingresados por el usuario.
#!/bin/bash
declare –i num1 num2 prod=0
read –p “Ingrese número: “ num1
read –p “Ingrese número: “ num2
for((i=1;$i<=$num2;i=$i+1))
do
prod=$prod+$num1
done
echo “Producto: ” $prod
• Modifique el script anterior para calcular el producto de 2
valores pasados por parámetros.
#!/bin/bash
declare –i prod=0
for((i=1;$i<=$2;i=$i+1))
do
prod=$prod+$1
done
echo “Producto: ” $prod
• Codifique un script que, usando estructuras for, sume los valores
3 6 8 y 12.
#!/bin/bash
declare –i num suma=0
for num in 3 6 8 12
do
suma=$suma+$num
done
echo “Suma: ” $suma
• Codifique un script que, usando estructuras for, sume 4
parámetros del script.
#!/bin/bash
declare –i num suma=0
for num in $1 $2 $3 $4
do
suma=$suma+$num
done
echo “Suma: ” $suma
• Modifique el script anterior para sumar cualquier cantidad de
parámetros.
#!/bin/bash
declare –i num suma=0
for num in $@
do
suma=$suma+$num
done
echo “Suma: ” $suma
• Codifique un script que determine el tipo de archivo de los
parámetros pasados al programa.
#!/bin/bash
declare dato
for dato in $@
do
file $dato
done
• Modifique el programa anterior de modo que muestre el tipo de los
archivos de un directorio pasado por parámetro.
#!/bin/bash
declare dato
for dato in $(ls $1)
do
file $1/$dato
done
• El comando while permite repetir un conjunto de acciones en tanto
la condición de repetición sea VERDADERA
while [ condición ]
do
acciones
done

BUCLES INFINITOS LECTURA DE ARCHIVOS


while true ó : while read variable
do do
acciones acciones
done done < nombre_archivo
• Codifique un script, aplicando la estructura while, que calcule
el producto mediante sumas de 2 parámetros del programa.
#!/bin/bash
declare –i prod=0 num2=$2
while [ $num2 –gt 0 ]
do
prod=$prod+$1
num2=$num2-1
done
echo “Producto: ” $prod
• Codifique un script que muestre todos los parámetros del
programa.
#!/bin/bash
while [ -n “$1” ]
do
echo “Parámetro: ” $1

shift
done
• Codifique un script que sume todos los parámetros del programa.
#!/bin/bash
declare –i suma=0
while [ -n “$1” ]
do
suma=$suma+$1
shift
done
echo “Suma: ” $suma
• Codifique un script que muestre el tamaño de los archivos
ordinarios o directorios pasados como parámetros al programa.
Incluya los controles necesarios.
#!/bin/bash
while [ -n “$1” ]
do
if [ -f $1 –o –d $1 ];then
du –sh $1
fi
shift
done
• Codifique un script que muestre de forma indefinida un mensaje
pasado por parámetro. Agregue una pausa de 2 segundos entre cada
mensaje.
#!/bin/bash
while true
do
echo $@
sleep 2
done
• Codifique un script que muestre el nombre de usuario, ID y
directorio home de los usuarios del sistema.
#!/bin/bash
while read linea
do
usuario=$(echo $linea | cut –f1 –d “:”)
id_usuario=$(echo $linea | cut –f3 –d “:”)
home_usuario=$(echo $linea | cut –f6 –d “:”)
echo “Nombre usuario: ” $usuario
echo “ID: ” $id_usuario
echo “Directorio personal: ” $home_usuario
done < /etc/passwd
• El comando until permite repetir un conjunto de acciones en tanto
la condición de repetición sea FALSA
until [ condición ]
do
acciones
done

BUCLES INFINITOS LECTURA DE ARCHIVOS


until false ó ! : until ! read variable
do do
acciones acciones
done done < nombre_archivo
• Codifique un script que, aplicando estructuras until, copie un
archivo en varios directorios. Tanto el archivo como los
directorios son pasados por parámetros. Verifique que los
directorios existan.
#!/bin/bash
archivo=$1
shift
until [ -z “$1” ]
do
if [ -d $1 ]; then
cp $archivo $1
else
echo “Directorio no existe”
fi
shift
done
• Codifique un script que, aplicando estructuras until, verifique
cada 2 segundos si un proceso (pasado por parámetro) existe o no.
Además muestre los atributos del proceso.
#!/bin/bash
until false
do
ps $1 > /dev/null
if [ $? -eq 0 ];then
ps -l $1
else
echo “$1 no existe”
fi
sleep 2
done
• Codifique un script que muestre para cada usuario del sistema el tamaño
de su directorio personal. Indicando además si está conectado o no.
#!/bin/bash
until ! read linea
do
usuario=$(echo $linea | cut –f1 –d “:”)
home_usuario=$(echo $linea | cut –f6 –d “:”)
tamanio=$(du –sh $home_usuario 2> /dev/null)
echo “Nombre usuario: ” $usuario
echo “Tamaño Dir. Personal: ” $tamanio
if [ -n “$(who | grep $usuario)” ];then
echo “CONECTADO”
else
echo “NO CONECTADO”
fi
done < /etc/passwd

También podría gustarte