6 votos

Mover la carpeta a la Papelera en el Buscador no está sincronizado con el Terminal

He intentado eliminar una carpeta que puedo acceder a través de terminal.app. A pesar de que el Buscador mueve la carpeta a la Papelera, yo todavía era capaz de ver el contenido y editar el archivo desde la terminal.

  • crea un archivo de texto

created a textfile

  • Mueve el directorio completo a la Basura a través del Buscador

Deleting the entire directory from Finder

  • Veo los archivos, incluso después de mover la carpeta a la Papelera

I see files even after deleting the folder

  • Yo se las arregló para editar/añadir contenido al archivo

I still managed to edit/append content to the file

El archivo no está disponible en los Últimos menú de Textedit después de ser movido a la Papelera, pero puede ser visto en la terminal con cat comando. Incluso después de mover a la Papelera, el directorio PWD no la ruta de actualización (con basura/tmp camino)

Ver el screencast @ http://goo.gl/tuJBT (5.20 min / ~24 mb)

9voto

shsteimer Puntos 8749

En pocas palabras, sí, este comportamiento es el esperado. Menos de lo ideal pero es completamente explicable y es un biproduct de cómo los archivos y directorios que están representados en el sistema de archivos de nivel.

Ayuda a entender cómo los archivos y directorios que están representados en el sistema de ficheros subyacente a través de inodes. Y cómo mover un archivo en el mismo sistema de archivos en realidad no cambiar el archivo de bloques, simplemente pasa el inodo de metadatos alrededor.

Permite retroceder un poco y aunque asegurarnos de que entendemos que: cuando se elimina un archivo a través del Buscador tienes (la mayor parte), en realidad, no eliminarlo. Sólo te estás moviendo a una papelera ubicación en la misma partición lógica como el archivo. Que la basura ubicación es en la misma partición es importante. Esto permite que el sistema operativo explotar los inodos para hacer el eliminar realmente, realmente rápido.

Ahora vamos a hablar acerca de inodes. Para archivos regulares, los inodos de mantener los metadatos del archivo, junto con algunos de los punteros a los bloques de datos en el sistema de archivos que en realidad tienen los datos para el archivo. Los metadatos son cosas como la fecha de creación, la fecha de último acceso, el propietario y el grupo, la configuración de permisos, etc.

Para los directorios que el inodo contiene todos los metadatos además de que contiene un puntero a una lista de todos los inodos que están "en" ese directorio. Así que si me "mover" un archivo en un sistema de ficheros todo lo que estoy haciendo es tomar una referencia a ese archivo de inodo de su directorio actual de inodo del archivo de lista y mover a otro directorio de inodo de lista de archivos. La lista cambiado, pero el inodo de referencia para el archivo no.

Estos metadatos shuffle significa que la ubicación física del archivo de bloques y el inodo del archivo en sí no cambian en el disco. Cualquier programa de acceso al archivo (suponiendo que el bloqueo de archivos no está siendo utilizado) puede continuar para acceder a ella incluso mientras estoy en movimiento porque todas las referencias que las necesidades se han mantenido los mismos. El inodo de un archivo o directorio no cambia mientras se mantiene en el mismo sistema de archivos. Y cuando los programas de acceso a archivos y directorios, la mayoría de que el acceso se realiza a través de referencias al inodo.

Bastante limpio.

Pero se puede llevar a algunos de sacudir su comportamiento si se está accediendo a un directorio desde varios lugares y, a continuación, mueva el directorio. Y esto es lo que estás experimentando.

En tu caso, tienes un Terminal de comandos en un directorio. Cuando se cambió a que el directorio de su shell de leer el inodo de metadatos para ese directorio y actualizado algunas de las estructuras de datos y variables de entorno. Una de esas variables de entorno fue la variable PWD.

A continuación, se elimina el directorio en el que se coloca el directorio de inodo en virtud de la .Trash directorio la lista de archivos. Los metadatos de estos dos nodos i fue actualizado para el borrado del directorio ahora tenía un directorio principal atributo de metadatos que los puntos a .Trash y .Trash de inodo de metadatos tengo una nueva entrada en su lista de los niños: la carpeta de eliminados de inodo. Pero su aplicación Terminal no sabía que esto sucedió. No hay nada que le dijeron que se debe recargar sus estructuras de datos. Por eso, pwd y $PWD continuar para mostrar el original de la ruta de acceso al directorio. Usted tiene que desencadenar una acción en la shell que hace que el inodo de metadatos en el directorio de trabajo para ser re-leer y las estructuras de datos y variables de entorno para ser re-generado. Puede ser algo tan simple como se llama cd . hacer un no-op de cambio de directorio. O usted puede mover de ida y vuelta en el directorio con rutas absolutas.

La razón por la razón por la que cat en el Terminal funciona para mostrar un archivo en ese directorio es que el inodo que cat se utiliza para el acceso que el archivo no cambia sólo porque su ubicación en el disco cambiado. Por lo cat todavía se pueden encontrar con ella, debido a que usted está utilizando una referencia relativa al archivo. Si el archivo se encontraba originalmente en /foo/bar/moo.txt e intentó hacer cat /foo/bar/moo.txt después de que eliminó el bar directorio a través del Buscador verás que el cat llamada produciría un error con un archivo no encontrado error. Pero cat moo.txt seguirá trabajando porque todo el sistema de archivos de las estructuras de datos que cat debe usar para encontrar moo.txt en su directorio de trabajo han técnicamente no ha cambiado lo suficiente como para cat en su indicador de la Terminal a perder la pista de ellos.

Que una larga explicación. Espero no perder. :)

0voto

user4820 Puntos 41

Creo que este es un comportamiento esperado. Aunque PWD no actualizar la ruta de acceso de inmediato, si no otra cosa, como cd .. o, incluso, cd . se puede ver que el camino se actualiza.

0voto

Mover algo a la Papelera en el Finder hace exactamente esto, simplemente se mueve a la carpeta de archivo de un directorio especial (convenientemente nombres .La basura). En La Terminal.la aplicación está trabajando en Unix nivel y todavía puede tener acceso a la carpeta, como de costumbre. Una vez que se vacía la Papelera se ha ido para siempre.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X