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
-l
option contains 10 characters which are interpreted as follows:the first character is
d
if the entry is a directory;b
if the entry is a block-type special file;c
if 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 .