No sistema histórico Unix , os diretórios foram implementados como arquivos normais com um modo especial indicando que eles eram diretórios. Isso não é mais verdade em muitos sistemas de arquivos e sistemas operacionais modernos. Quando se trata das estruturas em disco, um diretório pode ou não ser representado como um blob de armazenamento semelhante a um arquivo, dependendo do sistema de arquivos. Quando se trata das interfaces do sistema operacional, existem chamadas de sistema separadas para acessar diretórios e arquivos regulares: opendir
, readdir
, rewinddir
, closedir
correspondendo a open
, read
, rewind
, close
respectivamente.
O software que lê um diretório deve usar as interfaces específicas do diretório. Quando você abre um diretório no Vim, ele não carrega seu conteúdo, como faria em um arquivo. O Vim não tem nenhuma manipulação nativa para diretórios: se você executar vim --noplugin
em um diretório, o Vim reclamará que "foo" is a directory
e não salvará o buffer pelo mesmo motivo.
O principal objetivo do netrw é acessar arquivos remotos (através de uma variedade de protocolos de rede). Como você não pode facilmente executar comandos como ls
e cp
nos diretórios que contêm esses arquivos remotos, o netrw inclui código para procurar diretórios e manipulá-los - é um gerenciador de arquivos e também um navegador de arquivos remoto. Essas capacidades de gerenciador de arquivos fazem sentido tanto local quanto remotamente, de modo que o netrw se registra como um manipulador para diretórios locais, além de arquivos e diretórios remotos.