Come posso ignorare l'opzione "noclobber" di bash?


17

L' bash noclobberopzione impedisce di sovrascrivere i file con il reindirizzamento. Ma a volte lo voglio davvero. cshha un'opzione simile e può essere superata mettendo un !prima dei nomi dei file. C'è un modo per farlo con bash?

Risposte:


19

Sì. Aggiungi |all'operatore di reindirizzamento al modulo >|. Questo è nel § 3.6.2 del Manuale di riferimento di Bash , qv

Se l'operatore di reindirizzamento è '>' e l'opzione noclobber per l'insieme incorporato è stata abilitata, il reindirizzamento fallirà se il file il cui nome deriva dall'espansione di word esiste ed è un file normale. Se l'operatore di reindirizzamento è '> |', oppure l'operatore di reindirizzamento è '>' e l'opzione noclobber non è abilitata, il reindirizzamento viene tentato anche se esiste il file denominato da word.

Visita questo tutorial sull'opzione noclobber . Potrebbe essere di aiuto.


3

Usa |("pipe") in bash, anziché !("bang") come faresti csh. Per esempio:

echo done >| out

Si noti che se si desidera reindirizzare stderra stdout e ignorare noclobber, né >|&&>|funzionerà; usa invece la forma lunga:

cmd-with-errors done >| out 2>&1

Sai perché err &>| outnon funziona?
Sanghyun Lee,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.