Na verdade, o segundo formulário touch filename
não exclui nada do arquivo - ele apenas cria um arquivo vazio se não existir ou atualiza a data da última modificação de um arquivo existente.
E o terceiro filename < /dev/null
tenta executar o nome do arquivo com /dev/null
como entrada.
cp /dev/null filename
funciona.
Como para eficiente, o mais eficiente seria truncate -s 0 filename
; veja aqui: link .
Caso contrário, cp /dev/null filename
ou > filename
estão bem. Ambos abrem e fecham o arquivo, usando a configuração truncar em aberto. cp
também abre /dev/null
, o que o torna marginalmente mais lento.
Por outro lado, truncate
provavelmente seria mais lento que > filename
quando executado a partir de um script, pois a execução do comando truncate exige que o sistema abra o executável, carregue-o e execute-o.