rm
la recursividad solo funciona hacia abajo ¿correcto?
rm -r x y
eliminará x
y y
todo lo que esté dentro de ellos (si son directorios), pero no sus padres ni nada fuera de ellos.
En ejecución: sudo rm -R *.QTFS
eliminará todos los archivos * .QTFS en el directorio actual y sus hijos, ¿correcto?
No. Eliminará todos los archivos nombrados *.QTFS
, cualquier archivo recursivamente dentro de los directorios llamados *.QTFS
, y esos directorios mismos. Si desea ese otro comportamiento de eliminación, use find -delete
.
El directorio actual como se muestra en ls -lha
también contiene .
y ..
enlaces por la falta de una mejor palabra, entonces, ¿por qué la recursividad no sigue estos hacia arriba en el árbol de directorios? ¿Hay un límite artificial en la aplicación rm, o .
y ..
no son cosas reales?
Es un límite artificial de rm
.
Sin embargo, no es realmente tan artificial: es la única forma en que podría funcionar. Si se rm
siguen los ..
enlaces principales , cada rm -r
eliminaría todos los archivos del sistema, siguiendo todos los ..
enlaces hasta el final /
. rm
ve las entradas ..
y .
en cada directorio cuando enumera el contenido y las ignora explícitamente por ese motivo.
Puedes probar eso tú mismo, de hecho. Ejecutar rm -r .
y la mayoría de las rm
implementaciones se negarán a actuar, informando un error explícitamente:
$ rm -r .
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
(ese mensaje es de GNUrm
; otros son similares). Cuando encuentra estas entradas implícitamente, en lugar de como argumentos explícitos, simplemente las ignora y continúa. POSIX requiere ese comportamiento . En GNU rm
y muchos de los BSD, es proporcionado automáticamente por la fts_read
familia de funciones de jerarquía transversal.
o .
y ..
no son cosas reales?
.
y generalmente..
son entradas de directorio reales, aunque eso es específico del sistema de archivos. Casi siempre se presentarán como si fueran entradas reales de todos los códigos de usuario, independientemente. Muchas piezas de software (no solo ) hacen un caso especial de su comportamiento para atrapar o prevenir una recursión desbocada o indeseable.rm