Você atingiu quase exatamente as respostas corretas. Você só precisa de alguns detalhes preenchidos.
Na maioria das vezes (arquivos especiais excluídos), todos os arquivos são tratados exatamente da mesma forma, e os diretórios (a.k.a. "folders") podem ser implementados como arquivos. Os arquivos são na verdade apenas uma série de blocos de disco. Os "metadados" dos quais você escreve são chamados de "inodes" (veja O que é um Superbloco, Inode, Dentry, Arquivo e O que é um inode neste site). Os diretórios (ou "pastas") são apenas uma maneira de associar um nome de arquivo a um inode. Os metadados, além do nome (tipo de arquivo, permissões, propriedades, etc), residem no inode. Os metadados estão em formato binário, principalmente para compacidade e velocidade de acesso: a análise XML ou qualquer outro formato de texto demoraria demais.
Você pode ver uma representação de texto dos metadados do arquivo com o comando stat
: stat /bin/cat
lhe interessará. stat
é um comando GNU, por isso não estará disponível universalmente, mas a maioria das distribuições Linux deve tê-lo.
No que diz respeito a arquivos "estrangeiros", o conceito file / inode / directory vem de uma época em que a variabilidade dos systsms operacionais era muito maior do que é hoje. Os projetistas do Unix e seu sistema de arquivos original tinham muita experiência com o que hoje seria considerado sistemas operacionais e sistemas de arquivos muito bizarros. O conceito file / inode / directory quase certamente incorpora todas as suas experiências, e assim as variações moderadas em "o que é um arquivo" que os sistemas operacionais mais homogêneos fornecem não são realmente um problema. Para uma olhada nisso a partir de 20 anos atrás, veja O Sistema de Arquivos Pertence ao Kernel . Para um exame mais recente, consulte The Hideoous Name . Essa é uma postagem do blog de Russ Cox, leia também o artigo de Rob Pike, as referências do post do blog. Você receberá esclarecimento disso.