Diretórios padrão e / ou comuns em sistemas operacionais Unix / Linux

24

Vindo do mundo do Windows, descobri que a maioria dos nomes de diretório é bastante intuitiva:

  • \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 (anteriormente Documents and Settings ) contém arquivos de usuários, ou seja, 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 à própria operação do Windows

    • \Windows\Fonts armazena arquivos de fontes (surpresa!)

    • \Windows\Temp é um diretório temporário global

et cetera. Mesmo que eu não tivesse ideia 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 meu caminho em torno do sistema de arquivos.

Por exemplo:

  • /bin contém binários. Mas o mesmo acontece com /sbin , /usr/bin , /usr/sbin e provavelmente mais que eu não conheço. Qual e qual?? Qual a diferença entre eles? Se eu quiser criar um binário e colocá-lo em algum lugar em todo o sistema, onde colocá-lo?

  • /media contém sistemas de arquivos de mídia externos. Mas o mesmo acontece com /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 C: e D: que estavam no Windows?

  • /home contém os arquivos e configurações do usuário. Isso é intuitivo, mas o que é suposto entrar em /usr ? E como é que /root ainda é separado, mesmo sendo um usuário com arquivos e configurações?

  • /lib contém bibliotecas compartilhadas, como DLLs. Mas o mesmo acontece com /usr/lib . Qual a diferença?

  • O que é /etc ? Isso realmente significa "et cetera", ou alguma outra coisa? Que tipos de arquivos devem estar lá - globais ou locais? É tudo para coisas que ninguém sabia onde colocar, ou existe um caso de uso específico para ele?

  • Quais são /opt , /proc e /var ? O que eles representam e para que são usados? Eu não vi nada parecido com eles no Windows *, e eu simplesmente não consigo descobrir o que eles poderiam ser.

Se alguém puder pensar em outros lugares padrão que possam ser bons para conhecer, sinta-se à 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 é uma mentira. Eu vi coisas semelhantes no WinObj, mas obviamente não em uma base regular. Ainda não sei o que isso faz no Linux.

    
por Mehrdad 20.07.2011 / 06:43

3 respostas

29

As distribuições Linux usam o FHS: link

Você também pode tentar man hier .

Vou tentar resumir suas perguntas, mas sugiro que você leia a ESF:

  • / bin é para binários do sistema não-superusuário
  • / sbin é para binários do sistema de superusuário (raiz)
  • / usr / bin & / usr / sbin são para binários de não-superusuário ou superusuário compartilhados não críticos, respectivamente
  • / mnt é para montar temporariamente uma partição
  • / media é para montar muitas mídias removíveis de uma só vez
  • / dev contém os arquivos do dispositivo do sistema; é uma longa história:)
  • A pasta / usr e suas subpastas podem ser compartilhadas com outros sistemas, para que tenham acesso aos mesmos programas / arquivos instalados em um só lugar. Como o / usr normalmente está em um sistema de arquivos separado, ele não contém binários que são necessários para colocar o sistema online.
  • / root é separado porque pode ser necessário colocar o sistema on-line sem montar outros diretórios que possam estar em partições / discos rígidos / servidores separados
  • Sim, / etc significa "et cetera". Arquivos de configuração para o sistema local são armazenados lá.
  • / opt é um lugar onde você pode instalar programas que você baixa / compila. Dessa forma, você pode mantê-los separados do resto do sistema, com todos os arquivos em um só lugar.
  • / proc contém informações sobre o kernel e os processos em execução
  • / var contém arquivos de tamanho variável, como registros, correio, páginas da Web, etc.

Para acessar um sistema, você geralmente 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 meio de serviços como http / ftp / samba. Eu vi muito o / var usado para isso, o que não é realmente o seu propósito.

    
por 20.07.2011 / 06:59
17

Não vou responder sobre o que todos eles significam (outros têm), mas dê um pequeno contexto histórico.

Primeiro, lembre-se de que o UNIX está chegando perto dos 40 anos, nos dias de fita de papel e terminais codificados de 300 bauds para mainframes (o sistema Windows XP está perto dos 10 anos de idade). A digitação foi lenta e a necessidade de eficiência na digitação superou muitas outras considerações. Essa é a razão para os comandos básicos muito curtos (por exemplo, 'ls', 'cat', 'cc', 'dd', etc.). O mesmo aconteceu com as estruturas de diretórios. A ideia era que, se o comando tivesse mais de três ou quatro caracteres, o nome seria muito longo.

O diretório / usr continha originalmente diretórios pessoais do usuário, já que a maioria dos comandos estava em / bin e todos os arquivos do dispositivo estavam em / dev. Mais tarde, foi pensado para tornar a unidade primária (o sistema de arquivos raiz, '/') 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, foi pensado para ter diretórios home do usuário em / home, ainda outra unidade. E muito depois disso, ter um / var (abreviação de variável / variável). O diretório / etc significou 'et cetera', já que era a localização 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 que é deixado de fora (como / usr / local e / net), mas isso dá uma breve descrição de por que os nomes são "menos intuitivos".

    
por 20.07.2011 / 09:01
5

Como já mencionado aqui, as distribuições Linux usam principalmente o FHS, veja aqui para ver um tutorial- como visão geral, especialmente bom para alguém vindo do Windows.

Como nota, os diretórios do Windows parecem intuitivos, superficialmente. Mas deixe-me perguntar a você, onde as configurações de um programa pertencem, como um arquivo *.ini na pasta de programas, em Documents and Settings\User ( \Application Data ou \Local Settings\Application Data ) ou no registro infame? ninguém sabe, nem mesmo a Microsoft. E assim podemos continuar e continuar.

    
por 20.07.2011 / 07:12