/ / Que fait> | faire à bash? - bash

Que fait> | faire à bash? - bash

Dans cet article, Comment créer un fichier de correctif pour un RPM, il y a cette commande:

diff -ru base-1.4.4-orig base-1.4.4 >| $HOME/rpmbuild/SOURCES/base-1.4.4-f12.patch

Comme la sortie est écrite dans un fichier, l'opérateur de redirection simple > fonctionne bien pour moi.

Est-ce que cet opérateur signifie rediriger vers un tuyau? Si c'est le cas, comment une redirection vers un canal est-elle différente d'une simple redirection vers un fichier ou simplement d'un canal vers un processus?

Réponses:

6 pour la réponse № 1

En exécutant la commande

set -o noclobber

ou l'équivalent

set -C

Vous pouvez faire que bash refuse d'écrire dans les fichiers existants lors de la redirection de la sortie.

En utilisant >| plutôt que > remplace ce paramètre.

Les références:

Ou courir info bash (en supposant qu'il soit installé sur votre système) et recherchez >|:

s>|

(Si vous êtes familier avec csh et / ou tcsh, bash "s >| (supérieure à la barre verticale) est similaire à csh "s >! (supérieur à un point d'exclamation).


2 pour la réponse № 2

De la page de manuel bash:

Si l'opérateur de redirection est> | ou leredirection operator is> et que l'option noclobber de la commande set set n'est pas activée, la redirection> est tentée même si le fichier nommé par mot existe.