Como faço para substituir a opção bash “noclobber”?

17

A opção bash noclobber impede a substituição de arquivos por redirecionamento. Mas às vezes eu realmente quero. csh tem uma opção semelhante e pode ser sobreposta, colocando um ! antes dos nomes dos arquivos. Existe alguma maneira de fazer isso com bash ?

    
por vy32 06.11.2011 / 13:02

2 respostas

19

Sim. Anexe | ao operador de redirecionamento para formar >| . Isso está em § 3.6.2 do Manual de Referência do Bash , q.v.

If the redirection operator is ‘>’, and the noclobber option to the set builtin has been enabled, the redirection will fail if the file whose name results from the expansion of word exists and is a regular file. If the redirection operator is ‘>|’, or the redirection operator is ‘>’ and the noclobber option is not enabled, the redirection is attempted even if the file named by word exists.

Visite este tutorial sobre a opção noclobber . Pode ser de ajuda.

    
por 06.11.2011 / 13:12
3

Use | ("pipe") em bash , em vez de ! ("bang") como você faria em csh . Por exemplo:

echo done >| out

Se você quiser redirecionar stderr para stdout e substituir noclobber , nem >|& nem &>| funcionará; use o formulário longo em vez disso:

cmd-with-errors done >| out 2>&1
    
por 22.03.2013 / 00:05

Tags