Vindo do mundo Windows, achei a maioria dos nomes de diretório de pastas bastante intuitivos:
\Program Files
contém arquivos usados por programas (surpresa!)\Program Files (x86)
contém arquivos usados por programas de 32 bits em sistemas operacionais de 64 bits\Users
(anteriormenteDocuments and Settings
) contém os arquivos dos usuários, como documentos e configurações\Users\USER\Application Data
contém dados específicos do aplicativo\Users\USER\Documents
contém documentos pertencentes ao usuário
\Windows
contém arquivos que pertencem à operação do próprio Windows\Windows\Fonts
armazena arquivos de fonte (surpresa!)\Windows\Temp
é um diretório temporário global
et cetera. Mesmo se eu não tivesse idéia do que essas pastas faziam, eu poderia adivinhar com boa precisão seus nomes.
Agora, estou dando uma boa olhada no Linux e ficando bastante confuso sobre como encontrar o meu caminho no sistema de arquivos.
Por exemplo:
/bin
contém binários. Mas assim como/sbin
,/usr/bin
,/usr/sbin
, e provavelmente mais que eu não sei sobre. Qual e qual?? Qual a diferença entre eles? Se eu quiser criar um binário e colocá-lo em algum lugar do sistema, onde eu o coloco?/media
contém sistemas de arquivos de mídia externos. Mas o mesmo acontece/mnt
. E nenhum deles contém nada no meu sistema no momento; tudo parece estar em/dev
. Qual é a diferença? Onde estão as outras partições no meu disco rígido, como oC:
eD:
que estavam no Windows?/home
contém os arquivos e configurações do usuário. Isso é intuitivo, mas, então, o que é suposto entrar/usr
? E por que/root
ainda está separado, mesmo que seja um usuário com arquivos e configurações?/lib
contém bibliotecas compartilhadas, como DLLs. Mas o mesmo acontece/usr/lib
. Qual é a diferença?O que é
/etc
? Realmente significa "et cetera", ou algo mais? Que tipos de arquivos devem aparecer lá - global ou local? É uma coisa fácil para as coisas que ninguém sabia onde colocar, ou existe um caso de uso específico para isso?Quais são
/opt
,/proc
e/var
? O que eles representam e para que são usados? Não vi nada parecido no Windows * e simplesmente não consigo descobrir para que servem.
Se alguém puder pensar em outros lugares padrão que possam ser bons para conhecer, fique à vontade para adicioná-lo à pergunta; espero que isso possa ser uma boa referência para pessoas como eu, que estão começando a se familiarizar com os sistemas * nix.
* OK, isso é mentira. Eu já vi coisas semelhantes no WinObj, mas obviamente não regularmente. Ainda não sei o que eles fazem no Linux.
fonte
C:\Program Files
,C:\ProgramData
,%HOME%\AppData\Local
,%HOME%\AppData\LocalLow
,C:\Windows\SystemApps
... Todos os exemplos onde se pode encontrar executáveis no Windows. E nem vou falar sobre arquivos de configuração e registro, não quero ficar ainda mais deprimido. PS: Eu trabalho principalmente no Windows.Respostas:
As distribuições Linux usam o FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html
Você também pode tentar
man hier
.Vou tentar resumir as respostas das minhas perguntas, mas sugiro fortemente que você leia a ESF:
Para acessar um sistema, geralmente você não precisa de / var, / opt, / usr, / home; alguns dos diretórios potencialmente maiores em um sistema.
Um dos meus favoritos, que algumas pessoas não usam, é / srv. É para dados que estão sendo hospedados por serviços como http / ftp / samba. Eu já vi / var muito usado para isso, o que não é realmente o seu propósito.
fonte
/home/users/username
para usuários e/home/services/servicename
para o que você menciona/src
. Eu acho que isso funciona melhor, pois é mais versátil para particionar. Você pode instalá-lo em sua própria partição ou usar a mesma partição e os dados do usuário, o que geralmente é o que eu quero fazer.Não vou responder sobre o que todos eles significam (outros têm), mas darei um pouco de contexto histórico.
Primeiro, lembre-se de que o UNIX está chegando aos 40 anos, nos dias de fita de papel e terminais codificados de 300 bauds nos mainframes (o sistema Windows XP tem quase 10 anos). A digitação foi lenta e a necessidade de eficiência na digitação superou muitas outras considerações. Essa é a razão dos comandos básicos muito curtos (por exemplo, 'ls', 'cat', 'cc', 'dd' etc.). O mesmo aconteceu com as estruturas de diretório. O pensamento era que, se o comando tivesse mais de três ou quatro caracteres, o nome seria muito longo.
O diretório / usr originalmente continha os diretórios pessoais do usuário, pois a maioria dos comandos estava em / bin e todos os arquivos do dispositivo estavam em / dev. Mais tarde, pensou-se que a unidade principal (o sistema de arquivos raiz, '/') fosse pequena para tempos de inicialização mais rápidos. Então outras estruturas como / usr / bin, / usr / include e / usr / lib surgiram, onde / usr era uma "unidade" separada. Muito mais tarde, pensava-se que os diretórios pessoais do usuário estavam em / home, mais uma unidade. E muito mais tarde, ter um / var (abreviação de variável / variável). O diretório / etc significava 'et cetera', pois esse era o local geral de todos os arquivos de configuração do sistema. O / mnt foi usado como um local temporário para acessar uma unidade (geralmente uma unidade de backup). Diretórios como / opt, / proc e / media vieram muito mais tarde.
Há muito o que ficar de fora (como / usr / local e / net), mas isso fornece uma breve descrição de por que os nomes são 'menos intuitivos'.
fonte
Como já mencionado aqui, as distribuições Linux usam principalmente o FHS; veja aqui uma visão geral do tutorial, especialmente adequada para quem vem do Windows.
Como uma observação, os diretórios do Windows parecem intuitivos, superficialmente. Mas deixe-me perguntar: onde pertencem as configurações de um programa, como um
*.ini
arquivo na pasta de programas, emDocuments and Settings\User
(\Application Data
ou\Local Settings\Application Data
) ou no infame registro? ninguém sabe, nem mesmo a Microsoft. E assim podemos continuar e continuar.fonte