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.
nombre_archivo
]nombre_archivo
.
nombre_archivo_original
] [nuevo_nombre_archivo
]nombre_archivo_original
en
nuevo_nombre_archiv
.nombre_archivo_original
] [nuevo_nombre_archivo
]nombre_archivo_original
en
nuevo_nombre_archivo
.rm
El comando rm
funciona de manera muy similar al comando rmdir
, solo que toma un archivo en lugar de un directorio como argumento.
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
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.
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.
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
La siguiente imagen muestra un árbol de directorios relacionado con alimentos y grupos de alimentos.
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.