Me pregunto acerca de la dirección de la recursión en general y específicamente de la empresa.
La recursividad rm solo funciona hacia abajo ¿correcto?
En ejecución: sudo rm -R *.QTFSeliminará todos los archivos * .QTFS en el directorio actual y sus hijos, ¿correcto?
El directorio actual como se muestra en ls -lhatambié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?

Respuestas:
rm -r x yeliminaráxyytodo lo que esté dentro de ellos (si son directorios), pero no sus padres ni nada fuera de ellos.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, usefind -delete.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
rmsiguen los..enlaces principales , cadarm -reliminaría todos los archivos del sistema, siguiendo todos los..enlaces hasta el final/.rmve 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 lasrmimplementaciones se negarán a actuar, informando un error explícitamente:(ese mensaje es de GNU
rm; 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 GNUrmy muchos de los BSD, es proporcionado automáticamente por lafts_readfamilia de funciones de jerarquía transversal..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.rmfuente
fts_readimplementación, sin embargo, ese es solo para argumentos de línea de comandos.rmni siquiera ve*.QTFSporque se ha expandido globalmente en los nombres de archivo por bash antes de que se invoque el binario rm. La respuesta de @ tobyink señala eso..y..conducta caso especial se dice que son la causa de la existencia dotfilesAdemás de lo que escribió Michael Homer, hay otro factor que dificulta la recurrencia accidental al directorio principal.
Vaya a su directorio de inicio y escriba algo como:
Verá que muestra una lista de archivos y directorios que contienen la letra "s". Sin embargo, no se muestran archivos que comiencen con un punto inicial. Para mostrarlos, puede usar:
Esto se debe a que el shell se niega a expandirse
*para abarcar un punto inicial. Esto significa que:No recurrirá a
...fuente