¿Por qué están ocultos los nombres de archivo que comienzan con un punto? ¿Puedo ocultar archivos sin usar un punto como primer carácter?

15

Inicialmente pensé que era una coincidencia, pero ahora veo que incluso hay una etiqueta : todos los nombres de archivos ocultos comienzan con un punto. ¿Es esto una convención? ¿Por qué fue elegido? ¿Se puede cambiar? O en otras palabras (como una pregunta relacionada @evilsoup sugirió que implica la respuesta a un montón de otros): ¿puedo ocultar archivos sin renombrarlos (usando .como primer carácter de su nombre)?

JMCF125
fuente
O "¿por qué todos los nombres de archivos ocultos comienzan con un punto?", Si lo prefiere.
JMCF125
2
Sí, es una convención, en cuanto a por qué se eligió quién sabe, ve a preguntarle a los pioneros de UNIX, es una convención antigua .
terdon
44
Lea el artículo relacionado de Wikipedia sobre archivos ocultos y plus.google.com/101960720994009339267/posts/R58WgWwN9jp para conocer los aspectos del historial. No se puede cambiar.
jofel
Pensé que Linux era completamente personalizable ...
JMCF125
1
@ JMCF125 en realidad ese comentario salió como un poco más sarcástico de lo que pretendía, lo siento. ¿Está realmente preguntando: '¿puedo ocultar archivos sin renombrarlos?' - Si ese es el caso, debe editarlo en su pregunta.
evilsoup

Respuestas:

26

De acuerdo con Wikipedia ,

La noción de que los nombres de archivo precedidos por a. debería estar oculto es el resultado de un error de software en los primeros días de Unix. Cuando se agregaron las entradas especiales .y de ..directorio al sistema de archivos, se decidió que el comando ls no debería mostrarlas. Sin embargo, el programa se escribió por error para excluir cualquier archivo cuyo nombre comenzara con un .carácter, en lugar de los nombres exactos .o ...

... así que comenzó como un error, y luego se adoptó como una característica (para el registro, .es un enlace al directorio actual y ..es un enlace al directorio que se encuentra arriba, pero estoy seguro de que ya lo sabe ) Dado que este método de ocultar archivos en realidad es lo suficientemente bueno la mayor parte del tiempo, supongo que nadie se molestó en implementar la ocultación de archivos al estilo de Windows.

También está el hecho de que implementar diferentes comportamientos produciría una cantidad aún mayor de fragmentación en el mundo * nix, que es lo último que alguien quiere.

Hay otro método para ocultar archivos que no implica renombrarlos, pero solo funciona para los administradores de archivos GUI (y no es universal entre ellos; los principales Linux lo usan, pero no creo que OSX's Finder lo haga, y cuanto más específicos sean los administradores de archivos de Linux, es menos probable que admitan este comportamiento): puede crear un archivo llamado .hiddeny poner dentro de él los nombres de archivo que desea ocultar, uno por línea. lsy los globos de concha no respetarán esto, pero podría ser útil para usted, aún.

maldad
fuente
Sin embargo, esa ocultación no funciona en Unity. Pero como ha respondido directamente a todas las preguntas, lo marcaré como la respuesta aceptada (aunque voté por ambas respuestas).
JMCF125
3
La página de Wikipedia ya no contiene información sobre esto. Sin embargo, Rob Pike trabajó en UNIX en Bell Labs e hizo una breve publicación sobre el tema: plus.google.com/u/0/+RobPikeTheHuman/posts/R58WgWwN9jp
Alexander
" OS X ", no "OSX".
Peter Mortensen
14

Los archivos que comienzan con un punto son ignorados por defecto por el comando "ls", que tiene más o menos el mismo efecto que los archivos "ocultos" pero no es el mismo (otros comandos pueden elegir hacer lo mismo o no). Los archivos que comienzan con un punto no están "ocultos" porque "oculto" no es uno de sus atributos. A diferencia de DOS / Windows, "oculto" no es un atributo en Unix. Hay muchos atributos en Unix ("man chattr" te dirá todos ellos) pero oculto no es uno de ellos.

La razón por la cual los archivos de puntos son ignorados por "ls" es bastante gracioso / vergonzoso. No fue una decisión de diseño, sino el resultado de un error de software en los primeros días de Unix . Cuando el especial. y ... se agregaron entradas de directorio al sistema de archivos, se decidió que el comando ls no debería mostrarlas porque se estaban interponiendo en el camino. Sin embargo, el programa se escribió rápidamente para excluir cualquier archivo cuyo nombre comenzara con a. carácter, en lugar de los nombres exactos "." o "..". Y creó un precedente que se ha seguido desde entonces en Unix. Curiosamente, cuando los chicos de Unix se movieron para crear el Plan 9 , no pusieron archivos de puntos a propósito .

sergut
fuente
Lo intenté man chattr, aunque pensé que tal vez necesitaría algún paquete o programa específico para hacer posibles otros archivos ocultos.
JMCF125
0

Si puede ocultar archivos o no, y en qué condiciones, depende del sistema de archivos que esté utilizando y su controlador. Los sistemas de archivos tradicionales de Unix no tienen un atributo "ocultar" para los archivos.

Un controlador de sistema de archivos puede ocultar cualquier archivo que desee, simplemente omitiendo sus nombres cuando proporciona resultados a las llamadas al sistema que se utilizan para obtener una lista de directorio. Como describió sergut en su respuesta, los archivos que comienzan con un punto no están realmente ocultos.

(Así es también como los rootkits pueden ocultar sus archivos: se conectan a las llamadas del sistema que producen listados de directorio y filtran los archivos que desean ocultar).

Por ejemplo, en los sistemas de archivos del clúster Oracle ACFS, el directorio <filesystem mountpoint>/.ACFS/está realmente oculto: simplemente no aparecerá en la lista, ni siquiera con ls -a. Pero si sabe que está allí, puede acceder a él perfectamente.

Si está utilizando la función de instantánea del sistema de archivos ACFS, puede acceder a cualquier instantánea del sistema de archivos existente a través de ese .ACFSdirectorio. Si no estuviera oculto, un programa de copia de seguridad podría terminar haciendo una copia de seguridad tanto del contenido actual del sistema de archivos como del contenido de las instantáneas existentes, lo que probablemente sería indeseable; normalmente desea hacer una copia de seguridad del estado actual o del estado de una instantánea específica.

telcoM
fuente