Copiar, mover y eliminar archivos en la terminal de Linux
Los comandos para copiar, mover y eliminar archivos en la terminal de Linux son muy fáciles de utilizar, y este artículo te mostraré como hacerlo.
Estas tres acciones conforman tareas rutinarias que podremos hacer cuando estemos trabajando con un servidor, a través de determinados comandos para ello.
Normalmente, en un equipo con sistema operativo de ambiente gráfico como Windows o macOS encontramos un explorador de archivos que nos permite hacer esas acciones rutinarias sobre nuestros archivos.
En la terminal de Linux es posible lograrlo usando los siguientes comandos:
–> cp para copiar
–> mv para mover
–> rm para remover (eliminar permanentemente)
Ahora mismo vamos a comenzar los ejercicios prácticos de esta lección y para ello te comparto la séptima lección de este Curso Gratis: Comandos Básicos de Linux:
En caso de que prefieras las instrucciones escritas para realizar este ejercicio, sigue leyendo porque todo está detallado a continuación…
Copiar archivos en la terminal de Linux con el comando cp
Comienza por ingresar a la Terminal en Línea de YPS haciendo click en este enlace.
Una vez que estés sobre la terminal, crea un archivo llamado andres1 usando nano como te mostré en la lección pasada:
nano andres1
Una vez que estés dentro del editor de textos, introduce la siguiente información, y seguidamente guardas el archivo y te sales del editor con “Control O“ y “Control X“ respectivamente:
"Esto es una prueba de copiado"
Enlista el contenido del directorio actual para confirmar que tienes tu archivo recién creado ahí presente:
ls
Ahora copia el archivo andres1 dentro de la misma ubicación actual y a la copia le vas a poner como nombre andres2:
cp andres1 andres2
Si ejecutas un cat a cada uno de esos archivos, notarás que tienen el mismo contenido; naturalmente, pues uno es la copia del otro:
cat andres1
cat andres2
Copiar archivos y enviarlos a un directorio específico
Ahora vamos a crear un directorio dentro de nuestra ubicación actual llamado copia1:
mkdir copia1
Si ahora haces una lista de tu directorio actual deberás ver los dos archivos que creamos hace un momento, andres1 y andres2, más un directorio nuevo llamado copia1 que acabamos de crear con el comando anterior y viene coloreado en azul claro:
ls
Seguidamente, vamos a copiar el archivo llamado andres2 adentro del directorio copia1 usando el siguiente comando:
cp andres2 copia1
Considerando el primer ejercicio que hicimos arriba, podrías pensar por un momento que se acaba de crear una copia del archivo andres2 llamada copia1 dentro del directorio actual, pero no es así.
Lo puedes confirmar realizando una lista de tu directorio actual:
ls
Verás que siguen estando los dos archivos iniciales, y el directorio.
Lo que sucedió, en realidad, es que la copia del archivo andres2 se almacenó dentro del directorio copia1 con su mismo nombre. Puedes confirmarlo de tres maneras.
Tres formas de verificar el contenido de directorios
Para efectos prácticos, yo siempre recomiendo a personas que están comenzando en la terminal de Linux el Método 1 de los que voy a enlistar a continuación.
La razón de mi recomendación es que el hecho de navegar constantemente dentro y fuera de los directorios del árbol de archivos en la terminal de Linux sirve para dos cosas:
–> Simplificar los comandos que se van a ejecutar, pues no llevan argumentos de rutas.
–> Practicar la navegación y aprender rutas comunes dentro de la terminal.
Método 1:
Este método es lo que estuve haciendo durante mucho tiempo en mis comienzos, y es la forma más fácil de moverte y revisar directorios dentro de la terminal. Consiste en dos pasos:
–> Navegar dentro y fuera de directorios con el comando cd.
–> Hacer listas con el comando ls una vez que estemos dentro del directorio deseado.
Para el ejemplo de nuestro ejercicio práctico donde queremos saber el contenido del directorio copia1, lo primero que vamos a hacer es entrar al directorio usando el comando cd:
cd copia1
Ya estando adentro del directorio, ahora vamos a enlistar usando el comando ls:
ls
El resultado de ese comando, si has seguido todo al pie de la letra, debería ser el nombre del archivo que se encuentra en su interior, que es andres2.
Método 2:
El segundo método que te quiero compartir para verificar el contenido de directorios es especificar las rutas al momento de ejecutar el comando ls.
De esta manera los comandos se pueden volver un tanto más complicados porque deberías entonces conocer lo qué son las rutas absolutas y las rutas relativas para poder usarlo sin errores.
La cuestión es: las rutas absolutas y relativas no las estoy incluyendo en el Curso Gratis: Comandos Básicos de Linux, así que solo te voy a mostrar el comando específico basado en la descripción del ejercicio:
ls /root/copia1
Considerando que:
–> La terminal del ejercicio al momento de la grabación aterriza en el directorio /root/
–> Creaste un directorio llamado copia1 dentro de ese directorio;
Entonces el comando anterior debería de arrojarte como resultado el nombre del archivo que copiaste en su interior que es andres2, sin importar desde donde lo ejecutes.
Esto es porque le estás indicando al comando ls la ruta absoluta del directorio que debe enlistar.
Método 3:
El tercer método es muy parecido al método 1, pero en vez de emplear el comando ls, emplearemos el comando tree para dibujar la estructura jerárquica del contenido que hay sobre nuestro directorio actual.
tree
El resultado debe ser igualmente el nombre del archivo que acabamos de copiar allí adentro, que es andres2.
Copias recursivas de archivos y directorios en la terminal de Linux
Para este ejercicio vamos a descargar nuevamente el repositorio que vimos en la lección anterior llamado SSH Chat:
wget https://github.com/shazow/ssh-chat/archive/refs/heads/master.zip
Ahora lo descomprimimos en nuestra ubicación actual con el siguiente comando:
unzip master.zip
Creamos un directorio llamado copiarecursiva con el siguiente comando:
mkdir copiarecursiva
Y copiaremos recursivamente todo el contenido de nuestro repositorio extraído hacia adentro del directorio nuevo llamado copiarecursiva usando el siguiente comando:
cp -r ssh-chat-master copiarecursiva
De esta manera se acaba de copiar todo el contenido recursivamente hacia adentro de nuestro directorio nuevo, y lo puedes comprobar haciendo listas con el comando ls y utilizando el comando tree como te mostré en las líneas anteriores.
Importante: los siguientes ejercicios usan elementos creados en los ejercicios anteriores. Si por algún motivo debes reiniciar la terminal de prácticas o comienzas a hacer este ejercicio con una sesión fresca, es importante que completes todos los ejercicios en las líneas de arriba para que todo te pueda salir igual que me sale a mi en el videotutorial.
Mover un archivo en la terminal de Linux
Para este ejercicio, crearemos un directorio nuevo dentro del mismo directorio de inicio del superusuario donde aterriza la terminal cuando iniciaste sesión.
Usaremos el comando siguiente para crear ese nuevo directorio:
mkdir moviendounelemento
Puedes confirmar con el comando ls que tienes todos los elementos anteriores en tu terminal más este nuevo directorio que acabas de crear.
Proseguimos ahora con la acción de mover el archivo llamado andres2 hacia adentro del directorio nuevo creado llamado moviendounelemento con el siguiente comando:
mv andres2 moviendounelemento
Puedes confirmar que se ha realizado el cambio de ubicación del archivo andres2 usando los comandos ls y tree como te mostré anteriormente.
Clave de bono: te comento que el comando mv también sirve para renombrar archivos que ya existen, y en el videotutorial te muestro en el minuto 19:28 te muestro como hacerlo.
Moviendo archivos y directorios recursivamente en la terminal de Linux
Para este ejercicio crearemos un directorio dentro del mismo directorio de inicio del superusuario donde aterriza la terminal cuando iniciaste sesión, usando el siguiente comando:
mkdir moviendorecursivamente
Ahora moveremos todo el contenido del directorio “ssh-chat-master” hacia el nuevo directorio creado usando el siguiente comando:
mv ssh-chat-master/* moviendorecursivamente
Mediante los comandos ls y tree podrás verificar los movimientos que acabamos de hacer.
Eliminar archivos y directorios dentro de la terminal de Linux
Eliminar archivos en la terminal de Linux
Para eliminar archivos y directorios específicos dentro de la terminal de Linux simplemente debes ejecutar el comando rm indicando el nombre del archivo o los archivos que quieres eliminar.
Para este ejemplo eliminaremos dos archivos que usamos en esta lección, uno que hicimos, y uno que descargamos:
rm andres1 master.zip
Con esa sola operación acabamos de eliminar dos archivos.
Ahora bien, no siempre el contenido que queremos eliminar comprende archivos solamente. Hay ocasiones en las que se deben eliminar directorios.
Y usualmente, los directorios están llenos de más contenido, es decir, más archivos y directorios en su interior, así que para esos casos necesitas usar el comando rm con unas opciones adicionales que lo hacen más poderoso (y destructivo, si no tienes cuidado).
Eliminar directorios en la terminal de Linux
Para este ejercicio vamos a emplear el comando rm -rf que vimos en la lección anterior.
Sin embargo, es muy importante considerar que ese comando rm con esas opciones -rf es muy destructivo, porque borrará todo lo que se encuentre a su paso sin preguntar y sin vuelta a atrás.
Considerando también que el directorio donde hemos estado trabajando es nuestro directorio de inicio, es mejor mover todo lo que vamos a eliminar adentro de un nuevo directorio para asegurar que no eliminemos por error algunos archivos importantes que se encuentran allí, como por ejemplo los archivos:
–> .bashprofile
–> .bashrc
Así que; crea un nuevo directorio y mueve todos los archivos y directorios que creaste dentro del directorio de inicio utilizando el conocimiento que ya adquiriste, y si tienes dudas, puedes ver el videotutorial en el minuto 22:02 para que tengas una referencia de cómo lo hice Yo.
Una vez teniendo todo ordenado dentro del mismo directorio desechable que acabas de crear, simplemente ejecuta el comando rm -rf indicando el nombre del directorio a eliminar, que en mi caso fue andres:
rm -rf andres
Con eso acabas de borrar el directorio y todo su contenido, por lo cual, no me queda más que compartirte las claves para el éxito a continuación.
Claves para el éxito
–> El comando cp tiene una opción para ejecutar las copias recursivamente –> cp -r y hay que invocar esa opción para que se actúe de forma recursiva.
–> El comando mv por su parte, actúa recursivamente por naturaleza. Puedes englobar el objetivo de tus comandos usando el wildcard (comodín) asterisco “*”.
–> Una práctica recomendada cuando comienzas es copiar con cp, en vez de mover con mv, porque mantiene los originales en su lugar de origen. Es más fácil resolver errores así.
–> Una manera segura de mover es copiar entre diferentes directorios, y luego eliminar recursivamente lo que no necesites cuando hayas terminado el trabajo.
–> El comando rm -rf es altamente destructivo, borra todo definitivamente y sin confirmaciones. Empléalo con cuidado para evitar dolores de cabeza.
En el próximo videotutorial veremos cómo administrar usuarios en la terminal de Linux.
Si te gustó esta publicación, asegúrate de calificarla y también de dejarme tus preguntas o recomendaciones en la sección de comentarios.