Lección 4: rm, cp, y mv

Sabemos cómo crear directorios en el árbol del sistema de archivos, cambiar la ubicación del directorio actual dentro de ese árbol y crear y editar archivos de texto. Ahora aprenderemos algunos comandos de Unix para administrar y mantener nuestros archivos de texto.

Los siguientes comandos de Unix se pueden utilizar para eliminar (eliminar), copiar y mover o cambiar el nombre de un archivo.

rm [nombre_archivo]
Eliminar nombre_archivo.
cp [nombre_archivo_original] [nuevo_nombre_archivo]
Copiar el contenido de nombre_archivo_original en nuevo_nombre_archiv.
mv [nombre_archivo_original] [nuevo_nombre_archivo]
Renombrar o mover nombre_archivo_original en nuevo_nombre_archivo.

El Comando rm

El comando rm funciona de manera muy similar al comando rmdir, solo que toma un archivo en lugar de un directorio como argumento.

El Comando cp

El comando cp se comporta de manera diferente dependiendo de si su segundo argumento es un archivo o un directorio. Por ejemplo, dado un directorio, dir, con subdirectorio, subdir y que contiene el archivo de texto, file.txt:

dir
├── archivo.txt
└── subdir

El Comando:

$ cp archivo.txt nuevo_archivo.txt

ejecutar dentro del directorio dir creará un nuevo_archivo.txt en el directorio.

dir
├── archivo.txt
├── nuevo_archivo.txt
└── subdir

mientras que el comando:

$ cp archivo.txt subdir

creara una copia de archivo.txt con el mismo nombre en el directorio subdir.

dir
├── archivo.txt
└── subdir
    └── archivo.txt 

El Comando mv

El comando mv se utiliza para cambiar la ubicación de un archivo o directorio, así como para cambiar el nombre de un archivo o directorio sin cambiar su ubicación.

Suponga que el directorio de trabajo actual se llama dir y que contiene dos subdirectorios y un archivo de texto de la siguiente manera:

dir
├── archivo.txt
├── subdir1
└── subdir2

Ejecutando:

$ mv archivo.txt renambrado.txt 

desde dentro del directorio dir da como resultado un nuevo nombre para archivo.txt en la misma ubicación:

dir
├── renombrado.txt
├── subdir1
└── subdir2

mientras:

$ mv renombrado.txt subdir1

da como resultado una nueva ubicación para renombrado.txt sin cambiar su nombre:

dir
├── subdir1
│   └── renombrado.txt
└── subdir2

En los ejercicios verás cómo cambiar el nombre y la ubicación al mismo tiempo.

Hackear nuestro árbol de sistema de archivos con un machete: rm -rf

El enfoque que hemos adoptado hasta ahora para administrar directorios y archivos se puede comparar con hojas que crecen en los extremos de una rama (mkdir) y se podan una a la vez en la punta (rmdir y rm). Ahora buscamos una forma de cortar secciones enteras de nuestro árbol del sistema de archivos con un machete.

Ya hemos visto un ejemplo de un command argument (también llamado indicador de comando, opción de comando o cambio de comando) con el comando ls -l. Comenzando con la siguiente estructura de directorios:

dir2
├── sub1
├── sub2
│   ├── subsub1
│   │   └── subsubsub1
│   │       └── archivo2.txt
│   └── subsub2
│       └── archivo1.txt
└── sub3

Ejecutando el siguiente comando desde el directorio dir2:

$ rm -rf sub2

resulta en:

dir2
├── sub1
└── sub3

Podando el árbol del sistema de archivos en sub2 y eliminándolo y todos los directorios y archivos dentro de él y sus descendientes.

Ejercicios:

  1. Suponiendo que tiene el archivo word.txt que creó en la lección anterior, escriba lo siguiente en el símbolo del sistema de Unix:

      $ cp word.txt word2.txt

    Utilice el comando ls para verificar que ahora tiene tanto word.txt como word2.txt. Use ls -l y verá que son del mismo tamaño. Edite word2.txt para ver que tiene el mismo contenido que word.txt. Ahora ejecuta:

      $ rm word.txt

    Nuevamente, enumere los archivos en su directorio de trabajo actual con ls para confirmar que word.txt se ha eliminado.

    Finalmente, use el comando mv para cambiar el nombre del archivo a word.txt

  2. La siguiente imagen muestra un árbol de directorios relacionado con alimentos y grupos de alimentos.

    Tree view of food directory

    Después de que le dijeran que creara este directorio, su asistente lo intentó, pero cometió numerosos errores. Descargue alimentos.tgz y ejecute el siguiente comando en el indicador de bash en el mismo directorio con el archivo:

      $ tar xzvf alimentos.tgz
      

    Esto creará un árbol de directorios que se verá así:

      alimentos
      ├── carnes
      │   ├── aves_de_corral.txt
      │   ├── carnes_rojas.txt
      │   └── verduras
      │       ├── hongos.txt
      │       ├── legumbres.txt
      │       ├── raices.txt
      │       ├── vegetales_verdes.txt
      │       └── verduras_crucíferas.txt
      ├── cereales
      │   ├── frijoles.txt
      │   └── legumbres.txt
      ├── cheetos.txt
      ├── frutas
      │   ├── frutas.txt
      │   ├── lacceoses.txt
      │   ├── pescados_mariscos.txt
      │   └── skittles.txt
      ├── granos.txt
      └── lacteos_y_huevos
          └── huegos.txt
    
    
      

    Su trabajo consiste en corregir todos los errores que cometió su asistente y colocar el directorio de alimentos en el formulario que se muestra en la captura de pantalla.