\documentclass[12pt,a4paper]{article} \usepackage[spanish]{babel} \usepackage{hyperref} \usepackage{graphicx} \usepackage{subcaption} \title{Tema X Ejercicio III: Práctica de Comandos} \author{Nicolás A. Ortega Froysa} \begin{document} \maketitle \section{Ejercicios} \begin{enumerate} \item Listar todos los archivos del directorio {\tt /bin/}. \begin{verbatim} $ ls /bin/ \end{verbatim} \item Listar todos los archivos del directorio {\tt /tmp/}. \begin{verbatim} $ ls /tmp/ \end{verbatim} \item Listar todos los archivos del directorio {\tt /etc/} que empiecen por {\tt t} en orden inverso. \begin{verbatim} $ ls -r /etc/t* \end{verbatim} \item Listar todos los archivos del directorio {\tt /dev/} que empiecen por {\tt tty} y tengan 5 caracteres. \begin{verbatim} $ ls /dev/tty?? \end{verbatim} \item Listar todos los archivos del directorio {\tt /dev/} que empiecen por {\tt tty} y acaben en 1, 2, 3, ó 4. \begin{verbatim} $ ls /dev/tty*{1,2,3,4} \end{verbatim} \item Listar todos los archivos del directorio {\tt /dev/} que empiecen por {\tt t} y acaben en {\tt C1}. \begin{verbatim} $ ls /dev/t*C1 \end{verbatim} \item Listar todos los archivos, incluidos los ocultos, del directorio raíz. \begin{verbatim} $ ls -a / \end{verbatim} \item Listar todos los archivos del directorio {\tt /etc/} que {\em no} empiecen por {\tt t}. \begin{verbatim} $ ls /etc/[^t]* \end{verbatim} \item Listar los archivos del directorio {\tt /usr/} y sus subdirectorios. \begin{verbatim} $ ls /usr/* \end{verbatim} \item Cambiarse al directorio {\tt /tmp/} y crear directorio {\tt PRUEBA}. \begin{verbatim} $ cd /tmp/ && mkdir PRUEBA \end{verbatim} \item Verificar que el directorio actual ha cambiado. \begin{verbatim} $ pwd \end{verbatim} O también: \begin{verbatim} $ [[ $(pwd) == "/tmp" ]] \ && echo "Ha cambiado." \ || echo "No ha cambiado." \end{verbatim} \item Mostrar el día y la hora actual. \begin{verbatim} $ date +"%A %H:%M" \end{verbatim} \item Con un solo comando posicionarse en el directorio {\tt \$HOME}. \begin{verbatim} $ cd $HOME \end{verbatim} \item Verificar que se está en él. \begin{verbatim} $ pwd \end{verbatim} O también: \begin{verbatim} $ [[ $(pwd) == "$HOME" ]] \ && echo "Ha cambiado." \ || echo "No ha cambiado." \end{verbatim} \item Listar todos los ficheros del directorio {\em HOME} mostrando su número de {\em inodo}. \begin{verbatim} $ ls -i $HOME \end{verbatim} \item Mostrar todos los archivos y directorios visibles de vuestro directorio {\em PRUEBA}. \begin{verbatim} $ rm -r /tmp/PRUEBA/* \end{verbatim} \item Crear los directorios {\tt dir1/}, {\tt dir2/}, y {\tt dir3/} en el directorio {\tt PRUEBA}. Dentro de {\tt dir1/} crear el directorio {\tt dir11/}. Dentro del directorio {\tt dir3/} crear el directorio {\tt dir31/}. Dentro del directorio {\tt dir31/}, crear los directorios {\tt dir311/} y {\tt dir312/}. \begin{verbatim} $ mkdir -p \ /tmp/PRUEBA/{dir1/dir11/,dir2/,dir3/dir31/{dir311/,dir312/}} \end{verbatim} \item Copiar el archivo {\tt /etc/motd} a un archivo llamado {\tt mensaje} de vuestro directorio {\tt PRUEBA}. \begin{verbatim} $ cp /etc/motd /tmp/PRUEBA/mensaje \end{verbatim} \item Copiar el mensaje en {\tt dir1/}, {\tt dir2/}, y {\tt dir3/}. \begin{verbatim} $ for i in dir*; do cp mensaje $i; done \end{verbatim} \item Comprobar el ejercicio anterior mediante un solo comando. \begin{verbatim} $ ls /tmp/PRUEBA/dir* \end{verbatim} \item Copiar los archivos del directorio {\tt rc.d/}, que se encuentra en {\tt /etc/}, al directorio {\tt dir31/}. \begin{verbatim} $ cp -r /etc/rc.d/* /tmp/PRUEBA/dir3/dir31/ \end{verbatim} \item Copiar en el directorio {\tt dir311/} los archivos de {\tt /bin/} que tengan {\tt 1} como segunda letra y su nombre tenga cuantro letras. \begin{verbatim} $ cp /bin/?1?? /tmp/PRUEBA/dir3/dir31/dir311/ \end{verbatim} \item Copiar el directorio de otro usuario y sus subdirectorios debajo de {\tt dir11/} (incluido el propio directorio). \begin{verbatim} $ cp -r /home/nicolas/ /tmp/PRUEBA/dir1/dir11/ \end{verbatim} \item Mover el directorio {\tt dir31} y sus subdirectorios debajo de {\tt dir2/}. \begin{verbatim} $ mv /tmp/PRUEBA/dir3/dir31/ /tmp/PRUEBA/dir2/ \end{verbatim} \item Mostrar por la pantalla los archivos ordinarios del directorio {\tt \$HOME} y sus subdirectorios. \begin{verbatim} $ ls $HOME/* \end{verbatim} \item Ocultar el archivo {\tt mensaje} del directorio {\tt dir3/}. \begin{verbatim} $ mv /tmp/PRUEBA/dir3/mensaje /tmp/PRUEBA/dir3/.mensaje \end{verbatim} \item Borrar los archivos y directorios de {\tt dir1}, incluido el propio directorio. \begin{verbatim} $ rm -r /tmp/PRUEBA/dir1/ \end{verbatim} \item Copiar al directorio {\tt dir312} los fichers del directorio {\tt /dev/} que empiecen por {\tt port}, acaben en una letra que vaya de la {\tt a} a la {\tt b}, y tengan cinco letras en su nombre. \begin{verbatim} $ cp /dev/port[a-b] /tmp/PRUEBA/dir2/dir31/dir312/ \end{verbatim} \item Borrar los archivos de {\tt dir312/} que no acaben en {\tt b} y tengan una {\tt q} como cuarta letra. \begin{verbatim} # asumo que también se incluyen directorios (-r) $ rm -r /tmp/PRUEBA/dir2/dir31/dir312/???q*[^b] \end{verbatim} \item Mover el directorio {\tt dir312/} debajo de {\tt dir3/}. \begin{verbatim} $ mv /tmp/PRUEBA/dir2/dir31/dir312/ /tmp/PRUEBA/dir3/ \end{verbatim} \item Crear un enlace simbólico al directorio {\tt dir1/} dentro del directorio {\tt dir3/} llamado {\tt enlacedir1}. \begin{verbatim} $ ln -s /tmp/PRUEBA/dir1/ /tmp/PRUEBA/dir3/enlacedir1 \end{verbatim} \item Posicionarse en {\tt dir3/} y, empleando el enlace creado en el ejercicio anterio, crear el directorio {\tt nuevo1} dentro de {\tt dir1}. \begin{verbatim} $ cd /tmp/PRUEBA/dir3/ && mkdir enlacedir1/nuevo1/ \end{verbatim} \item Utilizando el enlace creado, copiar los archivos que empiecen por {\tt u} del directorio {\tt /bin/} en el directorio {\tt nuevo1/}. \begin{verbatim} $ cp /bin/u* enlacedir1/nuevo1/ \end{verbatim} \item Crear dos enlaces duros del fichero {\tt fich1}, llamarlo {\tt enlace}, en los directorios {\tt dir1/} y {\tt dir2/}. \begin{verbatim} # asumo que fich1 está en PRUEBA/ $ cd /tmp/PRUEBA/ $ echo dir1/enlace dir2/enlace | xargs -n1 ln /fich1 \end{verbatim} \item Borrar el archivo {\tt fich1} y copiar el enlace a {\tt dir3/}. \begin{verbatim} $ rm fich1; cp dir2/enlace dir3/ \end{verbatim} \item Crear un enlace simbólico (llamado {\tt enlafich1}) al fichero enlace de {\tt dir2/} en {\tt dir1/}. \begin{verbatim} $ ln -s dir2/enlace dir1/enlafich1 \end{verbatim} \item Posicionarse en {\tt dir1/} y, mediante el enlace creado, copiar el archivo {\tt fich1} dentro de {\tt dir311/}. \begin{verbatim} $ cd dir1/ $ cp enlace ../dir2/dir31/dir311/ \end{verbatim} \item Seguir en {\tt dir1/} y, mediante el enlace creado, sacar por pantalla las líneas que tiene el archivo {\tt fich1}. \begin{verbatim} $ cat enlace \end{verbatim} \item Borrar el fichero {\tt fich1} de {\tt dir2/}. \begin{verbatim} $ rm /tmp/PRUEBA/dir2/enlace \end{verbatim} \item Borrar todos los archivos y directorios creados durante los ejercicios. \begin{verbatim} $ cd && rm -r /tmp/PRUEBA/ \end{verbatim} \end{enumerate} \pagebreak \section{Derechos de Autor y Licencia} \noindent Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa \\ \\ Este documento se distribuye bajo los términos y condiciones de la licencia Creative Commons Attribution No Derivatives 4.0 International. \end{document}