Obviamente, pode-se argumentar que a criação do diretório pai deve ser o padrão e alguma opção de verificação pode ser usada para impedir a criação do diretório se o pai não existir.
Mas a razão pela qual é o contrário é apenas história. A versão básica do mkdir não criou diretórios pai. É por isso que as distribuições X11 vieram com um comando chamado mkdirhier, capaz de executar esta tarefa: verifique se os diretórios pai existem e crie-os, se necessário.
Posteriormente, essa funcionalidade foi adicionada ao comando mkdir em muitas versões do UNIX (não sei se ele está atualmente no padrão POSIX). Para manter a compatibilidade esse recurso foi disponibilizado, rodando em uma bandeira opção: -p.
Por que é ruim ativá-lo por padrão? Os scripts podem confiar na falha do mkdir se o diretório pai não existir. Especialmente como usuário root , pode ser perigoso criar árvores de diretório por padrão.
Exemplo:
if mkdir /backup/$(uname -n)/$(date +%Y%m%d)
then
perform_backup ...
Neste exemplo, o diretório seria criado e o backup executado mesmo se o sistema de arquivos /backupnão estiver montado e o pai /backup/$(uname -n)não existir se o padrão for o contrário.
Regra geral: é uma boa prática não alterar o comportamento padrão de nenhuma ferramenta. Se desejado, forneça opções para permitir a alteração do comportamento padrão.
alias mkdir="mkdir -p".