Fundamentos de la línea de comandos

Teoría: Manipulación de la estructura de archivos

En esta lección vamos a aprender cómo crear, renombrar, copiar y eliminar archivos y carpetas directamente desde la terminal. En lugar de hacerlo desde una interfaz gráfica, como el explorador de archivos, usaremos comandos, que nos dan mucha más flexibilidad y control.

Ya vimos en la lección anterior que se pueden crear archivos redirigiendo flujos, pero esta vez lo haremos de forma directa. Para que podamos practicar sin riesgos, trabajaremos en una carpeta que creamos dentro del directorio personal, llamada test. Así que todo lo que hagamos será dentro de ~/test.

Recuerda: si no tienes los permisos necesarios para modificar un archivo o carpeta fuera del directorio personal, te aparecerá un error. Pero en tu carpeta personal tienes todos los permisos, así que no hay problema.

Comandos básicos para trabajar con archivos

Crear archivos con touch

El comando touch básicamente actualiza la fecha de un archivo… pero si el archivo no existe, lo crea vacío. Y eso nos sirve mucho:

touch empty-file

Esto crea un archivo llamado empty-file sin ningún contenido.

👉 Este método es muy usado para generar rápidamente archivos vacíos.

asciicast


Eliminar archivos con rm

La forma más directa de borrar un archivo en terminal es usando rm, que viene de “remove”:

rm empty-file

Este comando borrará el archivo de forma permanente.

asciicast


Renombrar archivos con mv

En sistemas como Linux y Unix, no hay un comando específico para renombrar, pero se puede hacer usando mv, que normalmente sirve para mover archivos. Básicamente, mover un archivo con otro nombre equivale a cambiarle el nombre.

touch file
mv file renamed-file

Este comando cambia el nombre de file a renamed-file.

asciicast


Copiar archivos y carpetas con cp

Para copiar archivos usamos cp. Necesitamos decirle qué queremos copiar (origen) y cómo se va a llamar la copia (destino):

cp renamed-file renamed-file-copy

Esto genera una copia del archivo con un nombre distinto.

asciicast

Si vamos a copiar carpetas, debemos agregar una opción adicional: -r (de “recursivo”).

cp -r my-folder my-folder-copy

Esto hace una copia completa, incluyendo todos los archivos que contiene esa carpeta.


Manipulación de carpetas

Crear carpetas con mkdir

Usamos el comando mkdir (abreviación de “make directory”) para crear carpetas:

mkdir my-dir

Esto crea una carpeta llamada my-dir.

asciicast


Crear subcarpetas o carpetas anidadas

Si queremos crear una estructura como one/two/three, debemos usar el flag -p.

Sin -p obtenemos un error:

mkdir one/two/three

Resultado:

mkdir: cannot create directory ‘one/two/three’: No such file or directory

Porque one y two no existen todavía.

asciicast

Con -p, se crean todas las carpetas que faltan:

mkdir -p one/two/three

asciicast


Eliminar carpetas

Si intentamos usar rm sin opciones para borrar una carpeta, obtendremos un error:

rm my-dir/

Resultado:

rm: cannot remove 'my-dir/': Is a directory

asciicast

Para eliminar una carpeta y todo lo que contiene, usamos:

rm -r my-dir

(-r significa que va a eliminar de forma recursiva).

asciicast


Eliminar carpetas sin confirmación con -rf

A veces, algunas carpetas tienen archivos con permisos restrictivos, como solo lectura. Si tratamos de borrarlas con rm -r, el sistema nos pide confirmación para cada archivo.

Si estamos seguros de lo que hacemos, podemos usar esta combinación:

rm -rf one

Esto borra todo sin preguntar. Ten mucho cuidado con este comando, porque no hay botón de deshacer.

asciicast


Resumen

Comando¿Qué hace?
touch archivoCrea un archivo vacío
rm archivoElimina un archivo
mv archivo nuevo-nombreCambia el nombre de un archivo
cp archivo copiaCrea una copia del archivo
cp -r carpeta copiaCopia una carpeta completa
mkdir carpetaCrea una carpeta nueva
mkdir -p ruta/anidadaCrea carpetas anidadas en una sola línea
rm -r carpetaElimina una carpeta y todo lo que contiene
rm -rf carpetaElimina todo sin pedir confirmación (¡mucho cuidado!)

¡Con esto podemos comenzar a manejar archivos y carpetas como verdaderos usuarios avanzados de la terminal!