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,
nohup
redirecionastdout
paranohup.out
estderr
parastdout
. -
2>nohup.out
colocastderr
no arquivo também. - O
&& rm || cat
limpará o sucesso ou gerará o erro denohup.out
no erro. Você pode adicionar qualquer tratamento de erro desejado em vez de / incluindo ocat
ou 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/