Historicamente, uma das grandes decisões de design no Unix era considerar tudo como um arquivo.¹ Isso ocorre nas primeiras páginas de manual ls e stat ; por exemplo, na V3 (fevereiro de 1973), o stat manpage (que descreve o modo usado por ls ) diz que
The mode is a six-character string whose characters mean the following:
s: file is small (smaller than 4096 bytes)l: file is larged: file is a directoryx: file is executableu: set user ID on execution-: none of the above
etc.
Na V4 (outubro de 1973), o modo começa a se assemelhar ao que temos hoje; o ls manpage diz
The mode printed under the
-loption contains 10 characters which are interpreted as follows:the first character is
dif the entry is a directory;bif the entry is a block-type special file;cif the entry is a character-type special file;-if the entry is a plain file.The next 9 characters are interpreted as three sets of three bits each.
Portanto, parece que os criadores do Unix realmente pensaram que um arquivo simples é “apenas” o padrão, nada de especial, então ele não merece um caractere - tudo é um arquivo, e apenas arquivos que não são simples Descrição adicional. Pode-se pensar em - como sinalizando a ausência de "especialidade".
¹ Estritamente falando, a decisão do projeto era tornar tudo acessível através do sistema de arquivos, não considerar tudo como um arquivo; mas, como resultado, tudo tinha que ser disponibilizado como algum tipo de arquivo, e isso exigia a capacidade de distinguir diferentes tipos de arquivos. Veja seção 3 do Sistema de Compartilhamento de Tempo do UNIX .