Em alguns tipos de UNIX, a página man de rm especifica como um comando para desvincular um arquivo.
No UNIX, os arquivos são objetos no sistema de arquivos chamados Inodes, sem nomes ou localização além de um ID no sistema de arquivos. Seus nomes são referências a eles em vários diretórios, que são um tipo de arquivo que está indexando os arquivos (ou diretórios, uma vez que são arquivos) que estão listados nele.
Ao desvincular um arquivo, a contagem de referência do arquivo diminui, e quando ele atinge 0, ele é de fato excluído, já que está marcado como livre pelo sistema de arquivos e seus blocos / extensões são marcados como livres também.
Se você tivesse a capacidade de rm um diretório sem desvincular os arquivos dentro dele primeiro, você alcançaria um ponto em que você tem inodes referenciados em seu sistema de arquivos, mas não pode ser acessado por qualquer meio normal.
Como há uma referência a eles de acordo com sua contagem de referência, eles não são marcados como excluídos e se tornam arquivos perdidos.
Isso fica ainda mais complexo quando os "arquivos" perdidos são diretórios e, como tal, aumenta a quantidade potencial de armazenamento perdido no sistema de arquivos.
Então rm -r foi adicionado, como um recurso para facilitar a vida dos usuários do UNIX, em detrimento do padrão "UNIX spirit", já que é mais complexo que os utilitários clássicos do UNIX, pois está descendo para diretórios e removendo arquivos dentro de ,
Além disso, nos primórdios do UNIX, os sistemas não tinham muita memória e o mapeamento da estrutura recursiva de um diretório tinha uma penalidade de desempenho e, às vezes, era impossível fazê-lo sem dividir o trabalho.
cp, lê um arquivo e o copia, bloco por bloco. Se fosse copiar um diretório da mesma forma que um arquivo, ele adicionaria referências aos arquivos sem aumentar sua contagem de referências, o que poderia levar a dados inconsistentes (se lendo / escrevendo em um inode que os blocos estão marcados como livres desde que o inode original foi excluído), dados perdidos - uma vez que a exclusão da última referência (conhecida) de um arquivo pode fazer com que o número de inode seja reciclado.
Para a multidão dr .:
Os diretórios no UNIX são um tipo de arquivo, isso é verdade, mas como as informações neles são tratadas diferentemente pelo sistema, como são metadados do sistema de arquivos, os comandos que manipulam arquivos não podem funcionar em diretórios sem alterar seu comportamento para manipular o arquivo. metadados dependentes também.