Comment remplacer l'option “noclobber” de bash?

17

le bash noclobber Cette option empêche d’écraser les fichiers avec la redirection. Mais parfois, je veux vraiment. csh a une option similaire et il peut être surmonté en mettant un ! avant les noms de fichiers. Est-il possible de faire cela avec bash?

vy32
la source

Réponses:

19

Oui. Ajouter | à l'opérateur de redirection pour former >|. C'est dans § 3.6.2 du Manuel de référence de Bash , q.v.

Si l’opérateur de redirection est '& gt;' et que l’option noclobber de l’ensemble intégré a été activée, la redirection échouera si le fichier dont le nom résulte du développement du mot existe et est un fichier normal. Si l’opérateur de redirection est '& gt; |', ou ‘& gt;’ et que l’option noclobber n’est pas activée, la redirection est tentée même si le fichier nommé par mot existe.

Visite ce tutoriel sur l'option noclobber . Cela pourrait être utile.

JdeBP
la source
3

Utilisation | ("pipe") dans bash, au lieu de ! ("bang") comme vous le feriez dans csh. Par exemple:

echo done >| out

Notez que si vous voulez rediriger stderr à stdout et passer outre noclobber, ni >|& ni &>| marchera; utilisez la forme longue à la place:

cmd-with-errors done >| out 2>&1
Turvalar
la source
Est-ce que tu sais pourquoi err &>| out ne fonctionne pas?
Sanghyun Lee