Manipulación de archivos en Linux
A continuación estaremos usando las herramientas básicas y fundamentales para la manipulación de archivos en Linux. Estos son fundamentales para el uso de este sistema operativo.
Table of Contents
ToggleComando cp
El comando cp es uno de los más utilizados para la manipulación de archivos en Linux. Esto se debe a que es utilizado para copiar archivos/directorios. Veamos esto a continuación:
Sintaxis:
# cp (opciones) archivo_viejo archivo_nuevo
# cp (opciones) archivos directorio
Opciones más frecuentes:
-f Fuerza la reescritura si ya existe el destino.
-i Me habilita el “prompt” interactivo para evitar la sobreescritura.
-p Preserva todos los permisos de la estructura del directorio y/o
archivo, incluyendo la fecha de creación.
-r,-R Hace una copia recursiva, para poder copiar todo un directorio
y sus subdirectorios.
-v modo “verbose” en donde muestra lo que está haciendo.
Entonces, lo que podemos hacer es copiar un archivo para que en el destino tenga otro nombre; también podemos copiar varios archivos a un directorio.
# cp archivo1 archivo2
El resultado fue la copia del archivo1 al archivo2.
# ls -l archivo2
-rw-r–r– 1 root root 0 May 9 08:23 archivo2
Vemos que el archivo creado es nuevo (se darán cuenta por la fecha).
Para copiar varios archivos a un directorio:
1. Creamos un directorio.
# mkdir dir1
2. Copiamos los dos archivos (archivo1, archivo2) al directorio creado:
# cp archivo1 archivo2 dir1
# ls -l dir1
-rw-r–r– 1 root root 0 May 9 08:23 archivo1
-rw-r–r– 1 root root 0 May 9 08:23 archivo2
En el caso de no encontrarnos en nuestro home, podríamos tener un error. Esto se debe a que le dimos un path (es decir, una ruta) absoluta y el directorio dir1 no existe en /dir1 sino que está en /user/dir1 porque fue creado en nuestro home.
Luego, al ejecutar ls al directorio dir1, tampoco usamos un path absoluto (/root/test/dir1, sino ls -l dir1) porque, precisamente, estamos «parados» dentro de un directorio que contiene a “dir1”.
Con el comando pwd, sabremos en qué directorio en el que nos encontramos. En el caso de ser usuario root:
# pwd
/root/test
# ls -l
total 4
-rw-r–r– 1 root root 0 May 9 08:23 archivo1
-rw-r–r– 1 root root 0 May 9 08:23 archivo2
drwxr-xr-x 2 root root 4096 May 9 08:23 dir
Ejemplos:
1) Funcionamiento de la opción -v (modo verbose):
# cp -v archivo1 archivo2
`archivo1′ -> `archivo2′
2) Al agregar el -i el sistema nos preguntará en caso de sobreescribir:
# cp -i archivo1 archivo2
cp: overwrite `archivo2′?
3) Aquí vemos el funcionamiento de la opción –p. Listamos con -l para que vean los permisos y la fecha:
# ls -l archivo1
-rw-r–r– 1 root root 0 May 9 08:23 archivo1
# date
Tue May 9 08:23:15 ART 2022
Ahora lo copiamos:
# cp -p archivo1 nuevoarch
# ls -l nuevoarch
-rw-r–r– 1 root root 0 May 9 08:23 nuevoarch
Y, como se puede ver, el archivo nuevo conserva la misma fecha, distinto sería si hubiésemos hecho esto:
# cp archivo1 arch
# ls -l arch
-rw-r–r– 1 root root 0 May 9 08:23 arch
4) Aquí vamos a copiar de forma recursiva (un directorio y todo su contenido):
# cp -r /etc /dir1
# ls -l dir1/
total 4
-rw-r–r– 1 root root 0 May 9 08:23 archivo1
-rw-r–r– 1 root root 0 May 9 08:23 archivo2
drwxr-xr-x 34 root root 4096 May 9 08:23 etc
Al ejecutar ls -l dir, vemos que está el directorio “etc” pero la fecha indica el momento en que copiamos dicho directorio. No obstante, si usamos la opción -p se mantienen la fecha y demás privilegios.
Ante cualquier duda, siempre podemos usar el manual: man cp
Comando touch
Este comando cambia la fecha/hora de acceso o modificación de los archivos.
# touch (opciones) archivo
Opciones:
-a solo cambia el tiempo de acceso.
-m cambia el de modificación.
-t timestamps definir la fecha a utilizar
Recordemos que estos datos se encuentran en versión UTF-8 y en inglés. Veamos el siguiente ejemplo:
[[CC]YY]MMDDhhmm[.ss].
Por ejemplo, la fecha y hora para el 5 de Agosto de 2022 a las 12:43 es 202210051243 (Año-Mes-Dia-Hora).
Ejemplo:
# ls -l archivo1
-rw-r–r– 1 root root 0 Jun 5 05:41 archivo1
# touch archivo1
# ls -l archivo1
-rw-r–r– 1 root root 0 Jun 12 04:52 archivo1
# ls -l archivo2
-rw-r–r– 1 root root 0 Jun 12 04:53 archivo2
# touch -t 200101121845 archivo2
# ls -l archivo2
-rw-r–r– 1 root root 0 Jan 12 2001 archivo2
Ejemplo usando metacaracteres:
# touch hola{1,2,4,5}
hola1 hola2 hola4 hola5
Comando mv
Este comando se utiliza para mover o renombrar archivos y directorios.
Sintaxis:
# mv (opciones) origen destino
Opciones más usadas:
-f si ya existe lo fuerza a sobreescribir.
-i activa el modo interactivo para aceptar los cambios uno por uno.
Ejemplo para cambiar de nombre:
# mv archivo1.txt nuevonombre.txt
Ejemplo para mover:
# mv archivo1.txt /directorio
Comando mkdir
Este comando es utilizado para crear directorios.
# mkdir testing
# ls -ld testing/
drwxr-xr-x 2 root root 4096 Jun 12 02:56 testing/
Otro caso es si queremos crear un directorio que se encuentra dentro de otro. Pero tener en cuenta que si ninguno de los directorios que ponemos existe, nos dará error.
Ejemplo con error:
# mkdir es/otro/directorio/lejano
mkdir: cannot create directory `es/otro/directorio/lejano’: No such file or directory
Ejemplo para crear un directorio y una cadena de subdirectorios:
# mkdir -p es/otro/directorio/lejano
# ls -ld es/otro/directorio/lejano/
drwxr-xr-x 2 root root 4096 Jun 12 02:57 es/otro/directorio/lejano/
Comando rm
Este comando sirve para borrar tanto directorios como archivos.
# rm (opciones) archivos
-f hace un borrado sin preguntar nada.
-i en modo interactivo.
-r,-R para borrar recursivamente.
Ejemplo para borrar un directorio y TODO su contenido:
# rm -rf /directorio
#rm –rf /*
A este último se lo suele considerar como un “suicidio” del sistema. Ya que su destino es borrar absolutamente todo.
Comando rmdir
Es utilizado solamente para borrar directorios vacíos.
# rmdir (opciones) directorio
# rmdir dir
Cabe aclarar que, usualmente se utiliza el comando rm -rf.
Conclusión:
Estos comandos serán de vital importancia, ya que no solo lograremos una mejor manipulación de archivos en Linux. Sino que serán la base para futuras funciones y herramientas dentro del sistema gnu/linux. Estos pueden ser, script en bash, uso de enlaces, editar parámetros, etc..