En este apéndice se incluyen algunos exámenes anteriores hasta el curso
1999-2000.
- En un sistema UNIX se encuentran en el directorio tmp
que cuelga de HOME una serie de veinte ficheros de texto cuyos nombres
van desde datos.00.txt hasta datos.19.txt.
Combinar todos estos ficheros en uno único cuyo nombre sea datos.txt
siguiendo el orden numérico creciente. El fichero resultante del
apartado anterior (datos.txt) es un fichero
excesivamente voluminoso, y no resulta razonable conservarle tal cual. Por
esto se le quiere comprimir, y para ello hay en el directorio bin que
cuelga del HOME (no accesible por la variable PATH) un fichero
ejecutable llamado comprimir que toma la entrada estándar,
la comprime y proporciona
por la salida estándar el contenido comprimido. Usando esta utilidad de
compresión, comprimir el fichero datos.txt y generar un fichero llamado
datos.txt.Z.
El fichero datos.txt.Z contiene información «sensible» que no
conviene que sea accesible por ningún usuario excepto para el
propietario (que tendrá
control total) y para los demás miembros de su grupo (que sólo podrán ver
su contenido). Por esta razón ha de moverse el fichero original a un
subdirectorio oculto (el nombre que se le dé es arbitrario) que cuelgue del
HOME, y han de cambiarse adecuadamente los permisos del fichero y del
subdirectorio. También han de borrarse todos los ficheros de datos
originales.
- El usuario pepe estaba trabajando en el sistema, pero
debido a que ejecutó un comando de manera incorrecta se quedó «colgada»
dicha sesión. El usuario pepe volvió a entrar y mediante un comando obtuvo
entre otras las siguientes líneas:
F X UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
3 S root 0 0 0 128 20 28df28 0 Jan 1 ? 0:13 swap
1 S root 1 0 0 168 20 604a80 41 7ffe60 Sep 1 ? 0:00 init
1 S javi 7756 7701 0 156 20 777440 18 2dd450 11:16:37 ttyq2 0:00 cat
1 S daemon 144 1 0 154 20 741400 67 74b122 Sep 1 ? 0:00 mail
1 S teresa 2668 2667 0 158 20 750700 45 455dc0 09:34:57 ttyp6 0:00 -sh
1 S pepe 9290 7727 1 154 20 7c4cc0 10 796486 11:17:38 ttypa 0:00 more
1 S pepe 7727 7726 1 158 20 784cc0 55 45b3c0 11:15:58 ttypa 0:00 -sh
1 S pepe 9208 7727 1 154 20 7d3740 27 7bd686 11:17:38 ttypa 0:00 grep
1 S pepe 7681 7680 1 158 20 7c4040 55 45c7c0 11:15:19 ttypd 0:00 -sh
1 S pepe 7721 7681 1 154 20 777540 10 294390 11:15:44 ttypd 0:00 mio
|
¿Qué comando permite obtener esta información (incluir las opciones
oportunas)? ¿Qué línea de comandos escribirías para eliminar la sesión que
se nos quedó colgada?
En el directorio en el nos encontramos existen varios ficheros que
contienen en algún lugar de su nombre la subcadena log. Copiarlos
a un directorio que cuelga de nuestro HOME llamado tmp.
En el directorio bin (no accesible por la variable PATH)
que cuelga del HOME está el fichero a.out.
Se trata de un fichero ejecutable, que al ser invocado pasándole como
argumento un fichero llamado fich1.txt situado en
el directorio padre del actual, produce unas determinadas informaciones de
salida. Añadir dicha salida a los contenidos existentes en fichero
salida.log situado en tmp que cuelga del HOME.
De producirse algún error en la ejecución, depositar los mensajes que
lo anuncien en el fichero errores.log situado en tmp que el hijo
del HOME.
- Puede considerarse que en una máquina UNIX el sistema
de correo (mail) funciona como sigue:
Colgando del directorio raíz hay un directorio llamado buzon en el que se
encuentran los ficheros que contienen los mensajes recibidos para cada
usuario (uno para cada usuario), siendo el nombre de cada fichero igual al
nombre del usuario propietario. Supongamos para facilitar las cosas, que
todos los usuarios pueden leer/escribir en todos los ficheros que hay en el
directorio buzon.
Sabiendo que cada usuario tiene una variable de entorno llamada LOGNAME
que contiene su nombre de usuario, y suponiendo que no se dispone de ningún
comando específico para trabajar con el correo (¡no existe el comando
mail!), indicar los comandos UNIX que un usuario teclearía para la
realización de las siguientes tareas:
- Ver el correo recibido por páginas completas.
- Hacer una copia en el directorio Mail que cuelga del HOME y nombre
inbox de los mensajes recibidos.
- Eliminar del buzón los mensajes recibidos por el usuario, guardando una
copia llamada inbox en el subdirectorio Mail del directorio
HOME.
- Suponiendo que en el directorio actual se encuentra el fichero carta.txt que contiene el mensaje que quiere mandar al usuario
pepe de la misma máquina, enviar dicho mensaje.
- Borrar los mensajes de la propiedad del usuario que hay en su buzón.
- Realizar los apartados siguientes suponiendo que
estamos en un lugar desconocido de la estructura de directorios de una
máquina UNIX y NO NOS MOVEMOS DE ALLÍ.
En un directorio llamado voz, hijo del directorio raíz, se encuentran una
serie de ficheros de sonido, que se caracterizan porque sus nombres acaban
en «.au».
- Crear en el directorio HOME un directorio llamado aislados.
- Copiar en el directorio creado en el apartado anterior, todos los
ficheros de sonido del directorio voz.
- En el directorio aplicaciones, que es hijo del directorio padre del
actual, existe un aplicación llamada makepree que filtra ficheros
de sonido. Esta aplicación recibe un único argumento, que ha de ser el
nombre del fichero o de los ficheros (admite caracteres comodín o
metacaracteres) de sonido a filtrar. Por cada fichero de sonido que
procesa, makepree muestra por la salida estandar un mensaje
indicándolo; el mensaje contiene el nombre del fichero que se está
procesando. Filtrar todos los ficheros de voz copiados en el apartado
2, sabiendo que el directorio aplicaciones NO ESTÁ INCLUIDO EN
LA VARIABLE PATH, y guardando los mensajes de salida de la aplicación
en un fichero llamado filtrados, que ubicaremos en el directorio
actual.
- Repetir el apartado anterior, pero ahora sin que la ejecución de
makepree suponga el bloqueo del terminal.
- A partir de la información guardada en el fichero filtrados,
creado en el apartado dos puntos más atrás, indicar el número de
ficheros de sonido, cuyo nombre contenga la cadena «hablante1»,
que han sido filtrados.
- Realizar los apartados siguientes suponiendo que estamos en un lugar
desconocido de la estructura de directorios de una máquina UNIX y que
NO NOS MOVEMOS DE ALLÍ.
NOTA: No se permite utilizar el ';' (punto y coma) para separar órdenes
en una misma línea.
En un directorio llamado tmp que cuelga del raíz se encuentran una
serie de ficheros cuyas extensiones son .doc y .exe
- Crear con una sola línea de comandos dos directorios que cuelguen del
HOME llamados documentos y programas.
- Mover los ficheros cuya extensión sea .doc a documentos y los
que acaben en .exe a programas.
- Crear un fichero llamado busqueda.tmp en el padre del actual,
que contenga todas las líneas de los ficheros .doc donde aparezca
la palabra «Z80» ordenadas alfabéticamente.
(Se debe realizar con una sola línea de comandos).
- Entre los ficheros ejecutables (los que tienen extensión .exe) se
encuentra uno llamado conversor.exe, no accesible por la variable
PATH, que transforma los ficheros con extensión .doc en
otros con el mismo nombre pero con extensión .rtf.
A este ejecutable se le pasan los .doc como argumento
(admite metacaracteres) y deja los ficheros convertidos en el
directorio actual. Queremos convertir todos los ficheros .doc
que tengan en su nombre la cadena parte, conservando los mensajes
de error en caso de que se produzcan, y dejando el terminar libre
para continuar con otras tareas mientras se realiza ésta.
- Realizar los apartados siguientes suponiendo que
estamos en un lugar desconocido de la estructura de directorios de una
máquina UNIX y que NO NOS MOVEMOS DE ALLÍ.
NOTA: No se permite utilizar el ; (punto y coma) para separar órdenes en
una misma línea.
En un directorio llamado pub que cuelga del raíz se encuentran dos
ficheros: el aspirin.tar y el ejemplos.tar.
- Crear con una sola línea de comandos dos directorios que cuelguen del
padre del actual llamados herramientas y demos.
- Copiar el fichero aspirin.tar en el directorio herramientas
que acabas de crear y el fichero ejemplos en el demos.
- Tanto el fichero aspirin.tar como el ejemplos.tar,
son ficheros especiales ya que su contenido es un conjunto de ficheros.
Para extraer estos ficheros existe una aplicación llamada tar
ubicada en el directorio aplicaciones que cuelga del HOME.
Este directorio aplicaciones no es accesible por la variable PATH.
La aplicación tar funciona de la siguiente manera:
extrae los ficheros contenidos en el fichero .tar pasado como
argumento, dejando éstos en el directorio actual.
Los mensajes de error van a la salida estandar.
Extraer los ficheros contenidos en aspirin.tar y en
ejemplos.tar, guardando los mensajes de error que se produzcan
en el fichero errores que se ubicará en un directorio tmp que
cuelga de HOME.
- Almacenar en un fichero llamado lineas que se ubicará en el
directorio actual, todas la líneas que contengan la cadena de
caracteres «red neuronal», de todos los ficheros del
directorio demos (directorio creado en el apartado primero)
cuyo nombre empiece por los caracteres «ejemplo».
El contenido del fichero lineas debe estar ordenado.
Realizar este apartado con una sola línea de comandos.
- Indicar qué comando se ha ejecutado si la respuesta del sistema es:
UID PID PPID C STIME TTY TIME CMD
cevp 28134 28132 0 16:58:36 pts/80 0:00 -ksh
cevp 28377 28134 0 17:01:08 pts/80 0:00 mail usuario
cevp 28382 28134 0 17:01:12 pts/80 0:00 vi fichero.txt
|
El proceso vi se nos ha quedado «colgado», eliminarlo.
¿Qué comando, distinto de exit, ejecutarías para cerrar
la sesión
- Realizar los apartados siguientes suponiendo que
estamos en un lugar desconocido de la estructura de directorios de una
máquina UNIX y que NO NOS MOVEMOS DE ALLÍ.
NOTA: No se permite utilizar el ; (punto y coma) para separar órdenes en
una misma línea.
En el directorio tmp hijo del padre del actual tenemos un programa
fuente Pascal denominado calcula_entropia.p.
- 1.
- Para compilar programas Pascal tenemos un compilador denominado pc, que se encuentra en un directorio llamado compiladores,
hijo del raiz, y NO ACCESIBLE POR LA VARIABLE PATH.
Este compilador acepta el fichero con el programa fuente a compilar
como argumento, mostrando los errores, si los hay, por la salida
estándar de errores. El resultado es un fichero ejecutable, que se
almacena en el directorio actual con el nombre a.out.
Compilar el programa calcula_entropia.p, guardando los posibles
mensajes de error enun fichero llamado errores que se almacenará
en el directorio actual.
- 2.
- Mover el fichero a.out creado en el apartado anterior a un
directorio llamado programas, que cuelga dle padre del actual,
cambiando su nombre por calcula_entropia.
Para los siguientes apartados se supondrá que el directorio programas
está incluido en la variable PATH.
El programa compilado en el apartado 1, acepta por la entrada estándar una
serie de valores numéricos, que son interpretados como probabilidades de
los símbolos de una fuente, calcula la entropía de eésta y el resultado es
mostrado por la salida estándar.
En un directorio llamado fuentes, hijo del HOME, tenemos una
serie de ficheros cuyos nombres empiezan por S, sigue un número y
acaban por .prob (por ejemplo: S1.prob, S32.prob). Su
contenido son las probabilidades de una determinada fuente (una por
fichero).
- 3.
- Concatenar el contenido de todos los ficheros indicados en el párrafo
anterior en un fichero, dejando éste en el directorio actual.
- 4.
- Calcular las entropías de todas las fuentes contenidas en el fichero
que acabamos de crear, guardando el resultado en un fichero que dejaremos
en el directorio raíz. Realizar este apartado de manera qu el terminal no
se quede bloqueado.
- 5.
- En el directorio programas ya mencionado tenemos otro programa
llamado aplica_huffman, que tras serle proporcionadas por la
entrada estándar, y en orden decreciente, las probabilidades de una
fuente, muestra por la salida estándar un código compacto para esa
fuente. Aplicarle para el fichero S1.prob, teniendo en cuenta
que las probabilidades en él almacenadas no están ordenadas. Mostrar
la salida pantalla a pantalla.
Mediante el comando adecuado obtenemos la siguiente información por
pantalla:
UID PID PPID C STIME TTY TIME CMD
guille 13273 13264 19 18:11:14 pts/2 0:00 telnet jupiter
guille 13264 13262 80 18:10:39 pts/2 0:01 -csh
guille 13275 13264 17 18:15:18 pts/2 0:01 calcula_entropia
guille 13276 13274 80 18:20:15 pts/2 0:01 -csh
|
- 6.
- Indicar la línea de comandos ejecutada para obtener la salida
indicada.
- 7.
- Finalizar la ejecución del programa calcula_entropía.