Administración de archivos en Linux – Guía para novatos

Introducción

Ya aprendimos algunas cosas básicas y necesarias. Ahora podemos comenzar a poner en práctica lo aprendido. Para empezar, aprenderemos a crear algunos archivos y directorios y después moverlos. Los futuros artículos se ocuparán de poner contenido en estos y una manipulación más interesante.

Creando un directorio

Linux organiza su sistema de archivos de forma jerárquica. Con el tiempo, tenderá a acumular una buena cantidad de datos (las capacidades de almacenamiento siempre aumentan). Es importante que creemos una estructura de directorios que nos ayude a organizar esos datos de una manera manejable.

He visto a demasiadas personas simplemente llevar todo directamente en la base de su directorio de inicio y perder mucho tiempo tratando de encontrar lo que buscan entre 100 (o incluso 1000) de otros archivos. Debes desarrollar el hábito de organizar tus cosas en una elegante estructura de archivos ahora y te lo agradecerás en los próximos años.

Crear un directorio es bastante fácil. El comando que buscamos es mkdir, que es la abreviatura de Make Directory.

mkdir [opciones] <Directorio>

En su forma más básica, podemos ejecutar mkdir suministrando solo un directorio y lo creará para nosotros.

Vamos a desglosarlo:

  • Línea 1 Comencemos asegurándonos de que estamos donde creemos que deberíamos estar. (En el ejemplo anterior, estoy en mi directorio personal)
  • Línea 2 Haremos una lista rápida para saber qué ya estamos en nuestro directorio.
  • Línea 7 Ejecuta el comando mkdir y crea un directorio linuxtutorialwork (un buen lugar para poner más trabajo que haremso en relación con este tutorial, solo para mantenerlo separado de nuestras otras cosas).

Recuerda que cuando proporcionamos un directorio en el comando anterior, en realidad estamos proporcionando una ruta. ¿La ruta que especificamos es relativa o absoluta? Aquí hay algunos ejemplos más de cómo podemos proporcionar un directorio para ser creado

  • mkdir /home/cesar/foo
  • mkdir ./blah
  • mkdir ../dir1
  • mkdir ~/linuxtutorialwork/dir2

Si esto no tiene sentido, revisa el post sobre Navegación.

Hay algunas opciones útiles disponibles para mkdir. ¿Puedes recordar dónde podemos ir para averiguar las opciones de línea de comandos que admite un comando en particular?

El primero es -p, que le dice a mkdir que cree directorios principales según sea necesario (una demostración de lo que realmente significa a continuación). El segundo es -v, lo que hace que mkdir nos diga qué estás haciendo (como viste en el ejemplo anterior, normalmente no lo hace).

Y ahora el mismo comando, pero con la opción –v. 

Eliminar un directorio

Crear un directorio es bastante fácil. Borrar o eliminar un directorio también es fácil. Una cosa a tener en cuenta, sin embargo, es que no hay opción de deshacer cuando se trata de la línea de comandos en Linux (los entornos de escritorio de la GUI de Linux suelen proporcionar una función de deshacer, pero la línea de comandos no). Solo ten cuidado con lo que haces. El comando para eliminar un directorio es rmdir, abreviatura de remove directory.

rmdir [opciones] <Directorio>

Dos cosas a tener en cuenta. En primer lugar, rmdir admite las opciones -v y -p similares a mkdir. En segundo lugar, un directorio debe estar vacío antes de que pueda eliminarse (más adelante veremos una forma de evitarlo).

Crear un archivo en blanco

Muchos comandos que implican la manipulación de datos dentro de un archivo tienen la característica agradable de que crearán un archivo automáticamente si nos referimos a él y no existe. De hecho, podemos hacer uso de esta característica para crear archivos en blanco con el comando touch.

touch [opciones] <nombre de archivo>

touch es en realidad un comando que podemos usar para modificar los tiempos de acceso y modificación en un archivo (normalmente no es necesario, pero a veces cuando pruebas un sistema que depende del acceso a archivos o los tiempos de modificación pueden ser útiles).

Sé que algunos estudiantes han intentado usar este comando para hacer que parezca que sus archivos de asignación no se modificaron después de la fecha de vencimiento (hay medios para detectar esto, por lo que nunca funciona, pero apunta por ser creativo). Lo que estamos aprovechando aquí es que, si hacemos touch a un archivo y no existe, el comando nos hará un favor y lo creará automáticamente.

Truco

Muchas cosas en Linux no se hacen directamente, sino conociendo el comportamiento de ciertos comandos y aspectos del sistema y usándolos de manera creativa para lograr el resultado deseado.

Recuerda en la introducción que hablamos acerca de la línea de comandos que te proporciona una serie de bloques de construcción.

Eres libre de usar estos bloques de construcción de la forma que desees, pero en realidad solo puedes hacerlo de manera efectiva si comprendes cómo funcionan y por qué.

Por el momento, el archivo está en blanco, lo cual es un poco aburrido, pero en las próximas secciones veremos cómo poner datos en archivos y extraer datos de ellos.

Copiar un archivo o directorio

Hay muchas razones por las cuales podemos querer hacer un duplicado de un archivo o directorio. A menudo, antes de cambiar algo, es posible que deseemos crear un duplicado para que, si algo sale mal, podamos volver fácilmente al original. El comando que usamos para esto es cp, que significa copy.

cp [opciones] <origen> <destino>

Hay bastantes opciones disponibles para cp. Presentaré una de ellas más abajo, pero vale la pena revisar la página del manual para cp para ver qué más hay disponible.

Ten en cuenta que tanto el origen como el destino son rutas. Esto significa que podemos referirnos a ellos utilizando rutas tanto absolutas como relativas. Aquí están algunos ejemplos:

  • cp /home/cesar/linuxtutorialwork/example2 example3
  • Ruta cp example2 ../../backups
  • cp example2 ../../backups/example4
  • Ruta cp /home/cesar/linuxtutorialwork/example2 /otherdir/foo/example5

Cuando usamos cp, el destino puede ser una ruta a un archivo o directorio. Si se trata de un archivo (como los ejemplos 1, 3 y 4 anteriores), creará una copia del origen, pero nombrará la copia con el nombre de archivo especificado en el destino. Si proporcionamos un directorio como destino, copiará el archivo en ese directorio y la copia tendrá el mismo nombre del origen.

En su comportamiento predeterminado, cp solo copiará un archivo (hay una manera de copiar varios archivos de una vez, pero lo veremos más adelante. Comodines). Usando la opción -r, que significa recursivo, podemos copiar directorios.

Recursivo significa que queremos regresar un directorio y todos los archivos y directorios dentro de él, y para subdirectorios, entrar en ellos y hacer lo mismo y seguir haciendo esto.

En el ejemplo anterior, cualquier archivo y directorio dentro del directorio foo también se copiará a foo2.

Mover un archivo o directorio

Para mover un archivo usamos el comando mv que es la abreviatura de move. Funciona de manera similar a cp. Una ligera ventaja es que podemos mover directorios sin tener que proporcionar la opción -r.

mv [opciones] <origen> <destino>

Vamos a desglosarlo:

  • Línea 3 Creamos un nuevo directorio llamado copias de seguridad.
  • La Línea 4 Movimos el directorio foo2 a las copias de seguridad del directorio y lo renombramos como foo3
  • Línea 7 Movimos el archivo barney a copias de seguridad. Como no proporcionamos un nombre de destino, mantuvo el mismo nombre.

Ten en cuenta que, de nuevo, el origen y el destino son rutas y pueden denominarse rutas absolutas o relativas.

Renombrar archivos y directorios

Ahora, al igual que arriba con el comando touch, podemos usar el comportamiento básico del comando mv de una manera creativa para lograr un resultado ligeramente diferente.

Normalmente mv se usará para mover un archivo o directorio a un nuevo directorio. Como vimos en la línea 4 anterior, podemos proporcionar un nuevo nombre para el archivo o directorio y, como parte del movimiento, también le cambiará el nombre.

Ahora, si especificamos que el destino sea el mismo directorio que el origen, pero con un nombre diferente, entonces efectivamente hemos utilizado mv para cambiar el nombre de un archivo o directorio.

Vamos a desglosarlo:

  • Línea 3 Cambiamos el nombre del archivo foo a foo3 (ambas rutas son relativas).
  • Línea 6 Nos movimos a nuestro directorio principal. Esto se hizo solo para que en la siguiente línea podamos ilustrar que podemos ejecutar comandos en archivos y directorios, incluso si no estamos actualmente en el directorio en el que residen.
  • Línea 8 Cambiamos el nombre del directorio testdir a fred (la ruta de origen era una ruta relativa y el destino era una ruta absoluta).

Eliminar un archivo (y directorios no vacíos)

Al igual que con rmdir, eliminar un archivo es una acción que no se puede deshacer, así que ten cuidado. El comando para borrar o eliminar un archivo es rm, que significa remove.

rm [opciones] <archivo>

Eliminar directorios no vacíos

Al igual que otros comandos introducidos en esta sección, rm tiene varias opciones que alteran su comportamiento. Dejaré que mires la página del manual para ver cuáles son, pero presentaré una opción particularmente útil que es -r .

Similar a cp significa recursivo. Cuando rm se ejecuta con la opción -r, nos permite eliminar directorios y todos los archivos y directorios que contiene.

Una buena opción para usar en combinación con r es i, que significa interactivo. Esta opción te indicará antes de eliminar cada archivo y directorio y te dará la opción de cancelar el comando.

Una nota final

Sé que he enfatizado el punto, pero espero que ahora puedan apreciar que cada vez que nos referimos a un archivo o directorio en la línea de comandos, en realidad es una ruta.

Como tal, puede especificarse como una ruta absoluta o relativa. Este es casi siempre el caso, así que recuerda este punto importante. En artículos futuros no seguiré recordándote esto y los ejemplos dados generalmente no ilustrarán esto.

Recuerda experimentar con rutas absolutas y relativas en los comandos, ya que a veces dan diferencias sutiles pero útiles en la salida. (La salida del comando puede ser ligeramente diferente, pero la acción del comando siempre será la misma). (Ilustraré un ejemplo de esto en la sección sobre Comodines)

Resumen

Lo que aprendimos

mkdir

Hacer directorio – es decir, Crear un directorio.

rmdir

Eliminar directorio, es decir, Eliminar un directorio.

touch

Crea un archivo en blanco.

cp

Copiar, es decir. Copia un archivo o directorio.

mv

Mover, es decir, Mueve un archivo o directorio (también se puede usar para cambiar el nombre).

rm

Eliminar – es decir, Eliminar un archivo.

Conceptos importantes

No se pueden deshacer las acciones

La línea de comandos de Linux no tiene una función de deshacer. Debes realizar acciones destructivas con cuidado.

Opciones de línea de comandos

La mayoría de los comandos tienen muchas opciones útiles de línea de comandos. Asegúrate de hojear la página de manual de nuevos comandos para familiarizarte con lo que pueden hacer y lo que está disponible.

Practicando lo aprendido

Ahora tenemos a nuestra disposición, varios comandos para interactuar realmente con el sistema. Pongámoslos en práctica. Prueba lo siguiente:

  • Inicia creando un directorio en tu directorio de inicio para experimentar.
  • En ese directorio, crea una serie de archivos y directorios (y archivos y directorios en esos directorios).
  • Ahora cambia el nombre de algunos de esos archivos y directorios.
  • Elimina uno de los directorios que tiene otros archivos y directorios en él.
  • Regresa a tu directorio de inicio y desde allí copia un archivo de uno de tus subdirectorios en el directorio inicial que creaste.
  • Ahora mueve ese archivo nuevamente a otro directorio.
  • Cambia el nombre de algunos archivos.
  • A continuación, mueve un archivo y cámbiale el nombre en el proceso.
  • Finalmente, echa un vistazo a los directorios existentes en tu directorio de inicio. Probablemente tengas un directorio de Documentos, Descargas, Música e Imágenes, etc. Piensa en qué otros directorios pueden ayudarte a mantener tu cuenta organizada y comienza a configurarlo.