Linux
É possível falhar se um arquivo existir no Linux, através de um pequeno hack com GNU nohup . nohup redireciona /dev/null para stdin , portanto, todos os prompts interativos são ignorados, mas trata o uso de stdin como uma falha.
$ nohup cp -ia foo/* bar/
Para limpar um pouco:
$ nohup cp -ia foo/* bar/ 2>nohup.out && rm nohup.out || cat nohup.out
- Por padrão,
nohupredirecionastdoutparanohup.outestderrparastdout. -
2>nohup.outcolocastderrno arquivo também. - O
&& rm || catlimpará o sucesso ou gerará o erro denohup.outno erro. Você pode adicionar qualquer tratamento de erro desejado em vez de / incluindo ocatou remover tudo isso e lidar com$?como normal. - Você precisará ser um pouco mais inteligente sobre o local do arquivo temporário se usar isso de forma séria (
mktemp -d)
BSD
No BSD, você pode redirecionar stdin para cp , que será tratado como n e retornará um status diferente de 0.
$ cp -ia foo/* bar/ </dev/null
OSX
No OSX cp se comporta de maneira diferente do BSD, surpreendentemente, e retorna um status diferente de 0 com -n em um arquivo ignorado.
$ cp -n foo/* bar/