>
é o operador de redirecionamento do shell. Veja Qual é a diferença entre ">" e "> >" no comando shell? e Quando devo usar < ou < () ou < < e > ou > ()? É usado principalmente para redirecionar a saída de um comando para um arquivo. Se o arquivo não existir, o shell o criará. Se existir, o shell trunca (esvazia). Com apenas > file
, não há comando, portanto, o shell cria um arquivo, mas nenhuma saída é enviada a ele, portanto, o efeito de rede é a criação de um arquivo vazio ou o esvaziamento de um arquivo existente.
touch
é um comando externo que cria um arquivo ou atualiza o registro de data e hora, como você já sabe. Com touch
, o conteúdo do arquivo não é perdido, se existir, diferente de >
.
O comportamento de >
depende do shell. No bash, no dash e na maioria dos shells, > foo
funcionará conforme o esperado. Em zsh, por padrão, > foo
funciona como cat > foo
- zsh espera que você digite entrada.