Viniendo del mundo de Windows, he encontrado que la mayoría de los nombres de directorio de carpetas son bastante intuitivos:
\Program Files
contiene archivos usados por programas (¡sorpresa!)\Program Files (x86)
contiene archivos utilizados por programas de 32 bits en sistemas operativos de 64 bits\Users
(anteriormenteDocuments and Settings
) contiene los archivos de los usuarios, es decir, documentos y configuraciones\Users\USER\Application Data
contiene datos específicos de la aplicación\Users\USER\Documents
contiene documentos que pertenecen al usuario
\Windows
contiene archivos que pertenecen al funcionamiento de Windows mismo\Windows\Fonts
almacena archivos de fuentes (¡sorpresa!)\Windows\Temp
es un directorio temporal global
etcétera. Incluso si no tuviera idea de lo que hicieron estas carpetas, podría adivinar con buena precisión sus nombres.
Ahora estoy echando un buen vistazo a Linux, y me estoy confundiendo bastante sobre cómo encontrar mi camino en el sistema de archivos.
Por ejemplo:
/bin
Contiene binarios. Pero también lo hacen/sbin
,/usr/bin
,/usr/sbin
, y probablemente más que yo no conozco. ¿¿Cual es cual?? ¿Cuál es la diferencia entre ellos? Si quiero hacer un binario y ponerlo en algún lugar de todo el sistema, ¿dónde lo pongo?/media
contiene sistemas de archivos de medios externos. Pero también lo hace/mnt
. Y ninguno de ellos contiene nada en mi sistema en este momento; todo parece estar adentro/dev
. ¿Cual es la diferencia? ¿Dónde están las otras particiones en mi disco duro, como elC:
yD:
que estaban en Windows?/home
contiene los archivos y configuraciones del usuario. Eso es intuitivo, pero entonces, ¿en qué se supone que debe entrar/usr
? ¿Y cómo/root
es que todavía está separado, a pesar de que es un usuario con archivos y configuraciones?/lib
contiene bibliotecas compartidas, como archivos DLL. Pero también lo hace/usr/lib
. ¿Cual es la diferencia?¿Qué es
/etc
? ¿Realmente significa "etcétera" u otra cosa? ¿Qué tipos de archivos deberían ir allí, globales o locales? ¿Es una trampa para todo lo que nadie sabía dónde poner, o hay un caso de uso particular para ello?¿Cuáles son
/opt
,/proc
y/var
? ¿Qué representan y para qué sirven? No he visto nada parecido en Windows *, y no puedo entender para qué podrían ser.
Si alguien puede pensar en otros lugares estándar que puedan ser buenos para conocer, siéntase libre de agregarlo a la pregunta; Con suerte, esto puede ser una buena referencia para personas como yo, que están comenzando a familiarizarse con los sistemas * nix.
* OK, eso es mentira. He visto cosas similares en WinObj, pero obviamente no de manera regular. Sin embargo, todavía no sé qué hacen en Linux.
fuente
C:\Program Files
,C:\ProgramData
,%HOME%\AppData\Local
,%HOME%\AppData\LocalLow
,C:\Windows\SystemApps
... Todos los ejemplos en los que se pueden encontrar en los ejecutables de Windows. Y ni siquiera hablaré sobre los archivos de configuración y el registro, no quiero deprimirme aún más. PD: trabajo principalmente en Windows.Respuestas:
Las distribuciones de Linux usan el FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html
También puede intentarlo
man hier
.Trataré de resumir sus respuestas en la parte superior de mi cabeza, pero le sugiero encarecidamente que lea el FHS:
Para acceder a un sistema, generalmente no necesita / var, / opt, / usr, / home; algunos de los directorios potencialmente más grandes en un sistema.
Uno de mis favoritos, que algunas personas no usan, es / srv. Es para datos que se alojan a través de servicios como http / ftp / samba. He visto / var utilizado mucho para esto, lo cual no es realmente su propósito.
fuente
/home/users/username
para usuarios y/home/services/servicename
para lo que usted menciona/src
ser. Creo que esto funciona mejor porque es más versátil para particionar. Puede tenerlo en su propia partición o usar la misma partición y sus datos de usuario, que a menudo es lo que quiero hacer.No responderé sobre lo que todos quieren decir (otros tienen), pero daré un pequeño contexto histórico.
Primero, recuerde que UNIX se está acercando a los 40 años, en los días de la cinta de papel y los terminales codificados de 300 baudios a los mainframes (el sistema Windows XP tiene casi 10 años). La escritura fue lenta y la necesidad de eficiencia en la escritura superó muchas otras consideraciones. Esa es la razón de los comandos básicos muy cortos (es decir, 'ls', 'cat', 'cc', 'dd', etc.). Lo mismo ocurrió con las estructuras de directorios. La idea era que si el comando tiene más de tres o cuatro caracteres, entonces el nombre era demasiado largo.
El directorio / usr originalmente contenía los directorios de inicio del usuario ya que la mayoría de los comandos estaban en / bin y todos los archivos del dispositivo estaban en / dev. Más tarde se pensó que la unidad primaria (el sistema de archivos raíz, '/') era pequeña para tiempos de arranque más rápidos. Entonces surgieron otras estructuras como / usr / bin, / usr / include y / usr / lib, donde / usr era una "unidad" separada. Mucho más tarde, se pensó que tenía directorios de inicio de usuario en / home, otra unidad más. Y mucho más tarde que eso, tener a / var (abreviatura de variable / modificable). El directorio / etc significaba 'etcétera' ya que esa era la ubicación general de todos los archivos de configuración del sistema. El / mnt se usó como un lugar temporal para acceder a una unidad (a menudo una unidad de respaldo). Directorios como / opt, / proc y / media llegaron mucho más tarde.
Hay mucho que queda fuera (como / usr / local y / net), pero esto da una breve descripción de por qué los nombres son 'menos intuitivos'.
fuente
Como ya se mencionó aquí, las distribuciones de Linux utilizan principalmente el FHS, consulte aquí para obtener una descripción general similar a un tutorial, especialmente adecuada para alguien que viene de Windows.
Como nota, los directorios de Windows parecen intuitivos, superficialmente. Pero déjame preguntarte, ¿a dónde pertenecen las configuraciones de un programa, como un
*.ini
archivo en la carpeta de programas, enDocuments and Settings\User
(\Application Data
o\Local Settings\Application Data
), o en el infame registro? nadie lo sabe, ni siquiera Microsoft. Y así podemos seguir y seguir.fuente