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?

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.


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

Est-ce que tu sais pourquoi err &>| out ne fonctionne pas?
Sanghyun Lee
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.