Está en la página 1de 7

Sistema Operativo UNIX – PROBLEMAS - 41 -

PRACTICAS DE SISTEMA OPERATIVO UNIX

OPERACIONES BASICAS
1. Leer la página del manual instalado en el ordenador correspondiente al comando echo.
¿Cuál es la diferencia entre
$ echo Hola
y
$ echoHola ?

2. Utilizando los comandos who y whoami determinar quien está en el sistema, en qué
dispositivo está conectado y quién piensa el sistema que eres tú.

3. Ejecuta el comando date con las opciones adecuadas para que su salida tenga el formato
dd-mm-aa.

FICHEROS Y DIRECTORIOS
1. Crea un directorio en tu directorio HOME llamado PRACTICAS. Haz que este directorio
sea tu directorio de trabajo actual. ¿Cuál es el pathname completo de este nuevo
directorio?

2. Cambia tu directorio de trabajo otra vez a tu directorio HOME. Desde aquí (no cambies tu
directorio de trabajo), averigua toda la estructura de árbol desde la raiz hasta tu directorio
actual.

3. Construir la estructura siguiente:


Situarse en el directorio PRACTICAS y crear los directorios LENG, APLICA y CARTAS.
Situarse en el directorio LENG y crear los subdirectorios PASCAL y C.
Situarse en el directorio APLICA y crear el subdirectorio DBASE
Situarse en el directorio PRACTICAS y copiar los ficheros FICH1 y FICH2.
Situarse en el directorio PASCAL y copiar los ficheros Pl.DAT, Pl.PAS y Pl.BAK.
Situarse en el directorio APLICA y copiar el fichero P2.
Situarse en el directorio DBASE y copiar los ficheros Fl.DBF y Fl.NDX
Situarse en el directorio CARTAS y copiar los ficheros TEXTO y LETRA

4. Visualizar el contenido de cada directorio y el contenido de cada fichero.

5. ¿Cual es el pathname completo del fichero FICH2? ¿Cual es su pathname relativo desde
tu directorio HOME?

6. Usa el comando cat para visualizar por pantalla el contenido del fichero PASCAL. ¿De
que manera podría visualizarse mejor?

Curso básico de Linux


Sistema Operativo UNIX – PROBLEMAS - 42 -

7. Borra toda la estructura creada. ¿Como se puede hacer esto usando un único comando rm?
8. Visualiza el contenido del directorio /usr utilizando el comando cat. ¿De qué manera se
podría visualizar mejor?

9. Haz una copia del fichero llamado FICH2 en tu directorio. Cambia el nombre de la copia
que acabas de hacer y llámalo FICH2.B. Crea otro nombre para FICH2.B y llámalo
FICH_PASC.2.

10. Mueve el fichero P1.DAT a tu directorio practicas llamándolo P1_NUEVO.DAT.

11. Borra los ficheros FICH2.B y FICH_PASC.2 con un único comando.

12. Desde tu directorio HOME, borra todos los ficheros del directorio PRACTICAS usando
un único comando.

PERMISOS
1. Observa los permisos del fichero NADA de tu directorio HOME ¿A qué grupo pertenece? ¿A
quién se le permite cambiar la posesión o el grupo?

2. Haz una copia del fichero NADA (nada.copia) ¿De quién es la copia? ¿Cómo puedes cambiar
los permisos para que un compañero de grupo no pueda copiarlo?

3. Cambia los permisos del fichero EJEMPLO en tu directorio HOME para que el propietario
del fichero (tu) pueda leer y escribir en él, cualquiera del grupo pueda sólo leer y los demás no
puedan ni leer, ni escribir ni ejecutar.

4. Copia desde tu directorio HOME el fichero nada en el directorio /bin. ¿Has tenido algún
problema? ¿Por qué?

5. Copia el fichero /bin/cp en tu directorio HOME. ¿Has tenido algún problema? ¿Por qué?

6. Borra todos los permisos del fichero NADA. ¿Puedes ahora cambiar la posesión de ese
fichero al de tu compañero?

LA SHELL
1. Activa una variable de la shell llamada XXX que sea igual a tu nombre. Visualiza su
contenido.

2. Crea una shell hija escribiendo ksh. Mira ahora el contenido de XXX. ¿Qué sucede? Mata la
shell hija (Ctrl-d) ¿sabe algo el padre de la variable XXX ahora?

3. ¿Qué comando se puede escribir en la shell para que la shell hija vea el contenido de la
variable XXX? ¿Cómo pueden verse todas la variables que heredará la shell

Curso básico de Linux


Sistema Operativo UNIX – PROBLEMAS - 43 -

4. Crea otra shell hija. Asigna la variable XXX al nombre de tu compañero. ¿Es ahora XXX una
variable local o del entorno? Lista las variables del entorno. ¿Cómo está XXX asignada?

5. Ahora borra la variable XXX de la shell hija. ¿Existe localmente o dentro de tu entorno? ¿Por
que?

6. Mata la shell hija volviendo a la shell de login. Existe todavía XXX. ¿Por qué? ¿Cómo puedes
verificarlo?

EJECUCIÓN DE COMANDOS
1. Cuando se escribe, por ejemplo, el comando date, la shell lo ejecuta ¿Dónde está el comando
date?

2. ¿Y el comando cat? ¿Y el comando cd? ¿Y el comando verificar?

3. Usa el comando find para localizar un fichero llamado nada3. Empieza la búsqueda en tu
directorio HOME.

4. Haz este ejercicio con tu compañero. Usa el comando su para cambiarte al identificador de
entrada al sistema de tu compañero. Ahora, comprueba con el comando id tu identificativo de
usuario. ¿Cómo volverías a tu cuenta de entrada otra vez?

5. ¿Qué procesos se están ejecutando actualmente en el sistema? ¿Cuáles son tuyos?

6. ¿Cómo cambiarías el identificador de grupo (como ser miembro de otro grupo)?

NOMBRES DE FICHEROS
1. ¿Cuál seria la salida, desde tu directorio HOME de los comandos:

$ echo*.C
$ echo m[n-t]*.?
$ echo ??????
$ echo *[0-9]*
$ echo *.dat

REDIRECCIONAM1ENTO DE ENTRADA Y SALIDA


1. Redirecciona la salida del comando date a un fichero llamado date.salida.

2. Añade la salida del comando ls al fichero date.salida.

3. Usando redireccionamiento de entrada envía por correo electrónico a tu compañero el fichero


date.salida.

Curso básico de Linux


Sistema Operativo UNIX – PROBLEMAS - 44 -

4. Escribe el comando cp sin argumentos. Intenta redireccionar la salida al fichero cp.error.

5. Ordena el fichero PERMISOS según el tercer campo. Haz una ordenación numérica según el
tercer campo. Compara ambas ordenaciones.

6. Ordena el fichero NADA y grábalo en el fichero NADA.ORDEN. Ordena el fichero NADA


en orden inverso y graba la salida sobre el mismo fichero.

ENTRECOMILLADO Y CARACTERES ESPECIALES


1. Usa un mecanismo de entrecomillado para buscar la plantilla * en el fichero PERMISOS.

2. ¿Por qué echo '$abc' produce $abc mientras que echo "$abc" produce una línea en blanco?
Compruébalo.

PIPELINES
1. Construye un pipeline que cuente el número total de líneas del fichero PERMISOS que
contienen la plantilla "jta[a-z][a-z]*". Cuenta también las líneas que no tienen esa plantilla.

2. Construye un pipeline que cuente el número de usuarios que están conectados al sistema.

3. Construye un pipeline que saque por pantalla una lista ordenada de ficheros (y directorios)
en tu directorio HOME. Hazlo con formato de 3 columnas y sin cabeceras ni colas.

4. Construye un pipeline sencillo que envíe una versión desordenada del fichero NADA a un
fichero llamado NADA.NO_ORDEN y una versión ordenada al fichero NADA.ORDEN
(Usa el comando cat).

5. Construye un pipeline para obtener una lista de los identificadores de los usuarios
conectados al sistema.

6. Construye un pipeline sencillo que cree una lista de la estructura de tu directorio así como
un fichero que contenga la misma información.

MULTITAREA
1. Escribe los comandos
cd /user/man/cat1.Z
cat * > $HOME/gran_fichero &
Ejecuta entonces el comando ps –f. Anota el PID y EL PIDD de los procesos cat. Sal del
sistema y vuelve a entrar. ¿Está el proceso cat? Antes de continuar borra el fichero
gran_fichero.

Curso básico de Linux


Sistema Operativo UNIX – PROBLEMAS - 45 -

2. Repite le ejercicio anterior utilizando el comando nohup. Salte del sistema y vuelve a entrar.
Ejecuta el comando ps -f. ¿Quien es el padre ahora del comando cat?

3. Asigna a una variable llamada dir la salida del comando pwd. ¿Cómo se puede buscar el
número de caracteres en la cadena que contiene esa variable?

4. Cámbiate al directorio $HOME/practicas/. Asigna a una variable llamada "pdir" la salida del
comando pwd. Ahora vuelve a tu directorio HOME utilizando dicha variable.

5. Ejecuta los siguiente comandos


$ date;pwd;banner Hola &
$ (date;pwd;banner Hola) &
¿en qué se diferencian?

6. Escribe en la línea de comandos la combinación de comandos necesaria para que el sistema te


avise dentro de dos minutos mediante un mensaje en tu pantalla (para ello utilizar el comando
sleep).

INTRODUCCIÓN A LA PROGRAMACIÓN DE LA SHELL


1. Determinar cuál sería la salida que produciría un programa de la shell que contiene
echo $#
echo $3
echo $7
echo $*
echo $0
con la siguiente entrada en la línea de comandos
$ prog_shell abc def -d -4 +200 qwert

2. Si en el programa anterior añadimos en la primera línea: shift 2 ¿Cuál sería el resultado


obtenido con la misma entrada desde la línea de comandos?

3. Escribir un programa en la shell que pida el nombre y los dos apellidos de un usuario y los
escriba en la pantalla con el siguiente orden Primer apellido Segundo apellido, Nombre.

4. Escribe un programa en la shell llamado invertir que reciba hasta 9 argumentos y los escriba
en orden inverso.

5. Escribe un programa en la shell que liste el numero de argumentos que se le ha pasado (como
máximo 9), y liste por pantalla los tres primeros en líneas separadas. ¿Qué lista de
argumentos produciría la siguiente salida para este programa?
No puedo
escribir esto
más rápido

Curso básico de Linux


Sistema Operativo UNIX – PROBLEMAS - 46 -

INTRODUCCIÓN A LA PROGRAMACIÓN DE LA SHELL (II)


1. Escribe un programa en la shell llamado doble que pida al usuario un número entero y saque
por pantalla el doble de ese número.

2. Escribe un programa en la shell que saque por pantalla el primero y el último argumento de la
línea de comandos.

3. Escribe un programa en la shell que pida al usuario 1-Nombre, 2-Dirección, 3-Ciudad,


Provincia y Código Postal. Deberá almacenar las entradas en variables y sacar por pantalla lo
que el usuario haya introducido.

4. Escribe un programa en la shell que separe las horas, minutos y segundos del comando date,
asigne estos valores a variables y saque por pantalla lo siguiente "En estos momentos son las
HR horas, MIN minutos, SEG segundos"

PROGRAMACIÓN DE LA SHELL: BIFURCACIONES (I)


1. Asigna a la variable X el valor abc. Ahora escribe un comando test interactivo que asigne un
código de retorno 0 si el valor de X es abc, y un valor distinto de cero si no lo es. Verifica el
código de retorno con un comando echo.

2. Crea una construcción if interactiva que visualice por pantalla SI si X es igual a abc y NO en
caso contrario.

3. Escribe un programa de la shell que cuente el número de los argumentos de la línea de


comandos y saque por pantalla un mensaje de error si no hay exactamente tres mensajes o que
saque por pantalla los argumentos en sí si hay tres.

PROGRAMACIÓN DE LA SHELL: BIFURCACIONES (II)


1. Escribe un programa de la shell que pida al usuario una entrada y lleve a cabo una de las
siguientes tres posibles acciones:
 Si la entrada es A, el programa deberá sacar por pantalla "Escribe A".
 Si la entrada es B, el programa deberá sacar por pantalla "BIEN".
 Si la entrada es C, el programa deberá terminar.

2. Escribe un programa de la shell que responda a la línea de comandos como sigue:


 Si el primer argumento de la línea de comandos es -a, se le pide al usuario una cadena. Si
la cadena es D, ejecuta el comando date, en cualquier otro caso ejecuta el comando ls.
 Si el primer argumento de la línea de comandos en -b, se le pide al usuario un número. El
programa sacará por pantalla un mensaje indicando si el número es mayor o menor o igual
que 100.
 Si el primer argumento de la línea de comandos es -c, se le pide al usuario un nombre de
fichero. El programa indicará si el nombre del fichero es un directorio o no.

Curso básico de Linux


Sistema Operativo UNIX – PROBLEMAS - 47 -

 Si no hay ningún argumento en la línea de comandos o las opciones no son -a, -b o -c,
sacará por pantalla un mensaje de error para indicar esa circunstancia.

3. Modifica el programa del reloj de la práctica anterior de forma que el valor de las horas
aparezca en formato de 12 horas, AM/PM.

4. Modifica el programa doble de la práctica anterior de modo que el programa de la shell


controle:
 Una entrada nula.
 Un valor no entero.
 Más de un valor introducido.

PROGRAMACIÓN DE LA SHELL: BUCLES


1. Escribe un programa de la shell para que visualice los argumentos de la línea de comandos,
con un comando por cada línea.

2. Escribe un programa de la shell que visualice por pantalla la frase "Hola a todos" 50 veces, sin
utilizar un bucle FOR.
3. Escribe un programa de la shell llamado esta_dentro que se ejecute en batch y que verifique
cada 60 segundos si un usuario en particular ha entrado en el sistema. Cuando el usuario entre
en el sistema, imprime un mensaje en tu terminal que refleje la entrada e informe de en qué
terminal ha entrado el usuario (Nota: utilizar el comando sleep).

4. Crea un directorio llamado $HOME/.papelera. Escribe un programa de la shell llamado


borrado que lleve todos los ficheros que borres a este directorio. Este programa incluirá las
opciones -1 (lista el contenido de la papelera), y -r (vacía la papelera). Si no se le pasan
argumentos sacará un mensaje indicando cómo se usa el programa.

Curso básico de Linux

También podría gustarte