¿Cómo se eliminan archivos en la terminal de Linux? Usas el comando rm.
Eso es lo que la gente suele hacer. Pero se puede usar otro comando para eliminar archivos y enlaces en Linux.
el comando se llamaunlink
y aunque puede parecer que es solo para eliminar enlaces en Linux, también puede eliminar archivos.
Después de todo, el proceso de eliminación en Linux es básicamente desvincular. Cuando elimina un archivo, el kernel de Linux encuentra que corresponde al número de inodo X. Eliminará la entrada del archivo de la lista de su directorio y reducirá el recuento de enlaces del inodo X en 1. Ahora que el recuento de enlaces del inodo X es 0, el kernel sabe que no hay nadie que se vincule a este inodo, por lo que es seguro eliminar el inodo y eliminar el bloque de datos asociado con él.
Veamos cómo usar el comando desvincular.
Comando de desvinculación
El comando desvincular se usa para eliminar archivos y enlaces. Puede usarlo para eliminar enlaces suaves y duros.
Es uno de los comandos más simples que no tiene más opciones que--help
y--version
.
Para eliminar un archivo con desvincular, utilícelo así:
unlink filename
Para eliminar un enlace:
unlink link_name
No verá ningún resultado cuando elimine con éxito un archivo o enlace.
Básicamente, eso es todo para el comando desvincular. No puede hacer nada más.
No puede eliminar varios archivos o enlaces a la vez
Mientras que el comando rm puede eliminar varios archivos a la vez, unlink solo puede eliminar un archivo a la vez. No puede darle más de un archivo a la vez. No puede usar patrones de globo también.
Si intenta algo así, arroja un error y no elimina ningún archivo.
[email protected]:~/test$ unlink *.txt
unlink: extra operand ‘file2.txt’
Try 'unlink --help' for more information.
Lo mismo ocurre con la eliminación de varios enlaces a la vez.
No puede eliminar directorios con desvincular
La implementación GNU del comando unlink no puede eliminar un directorio. Lanza un error si intenta eliminar una carpeta.
[email protected]:~$ unlink new_dir
unlink: cannot unlink 'new_dir': Is a directory
Diferencia entre los comandos rm y unlink
El comando unlink usa el comando unlink system mientras que el comando rm usa una llamada al sistema unlinkat. Ambas llamadas al sistema son casi iguales.
Hay algunas diferencias obvias entre los dos comandos y ya puede verlo.
El comando de desvincular solo maneja un archivo o enlace a la vez. El comando rm puede manejar múltiples a la vez.
El comando rm puede eliminar directorios con la opción recursiva. El comando desvincular no puede eliminar un directorio.
El comando rm realiza una verificación de seguridad. Si no tiene permiso de escritura en un archivo, le pedirá que lo confirme de forma interactiva o use la opción forzar-f
. Con desvincular, no hay controles de seguridad. Eliminará el archivo protegido contra escritura.
Unlink no tiene funcionalidades u opciones adicionales, a diferencia del comando rm.
Podría haber algunos casos de uso en los que preferiría usar el comando desvincular en lugar de rm. Imagine que desea “forzar la eliminación” de un archivo independientemente de la protección contra escritura, pero desea que el script falle si el archivo no existe. El rm -f no mostrará ningún error si el archivo no existe, pero el desvinculado generará un error.