/ / Cosa fa> | fare in bash? - bash

Cosa fa> | fare in bash? - bash

In questo articolo, Come creare un file di patch per un RPM, c'è questo comando:

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

Poiché l'output è scritto su un file, il semplice operatore di reindirizzamento > funziona bene per me

Questo operatore significa reindirizzare a una pipe? In tal caso, in che modo un reindirizzamento a una pipe è diverso da un semplice reindirizzamento a un file o solo da una pipe a un processo?

risposte:

6 per risposta № 1

Eseguendo il comando

set -o noclobber

o l'equivalente

set -C

si può fare in modo che bash rifiuti di scrivere su file esistenti quando reindirizza l'output.

utilizzando >| piuttosto che > sostituisce quella impostazione.

Riferimenti:

Oppure corri info bash (supponendo che sia installato sul tuo sistema) e cerchi >|:

s>|

(Se hai familiarità con csh e / o tcsh, bash "s >| (maggiore della barra verticale) è simile a csh "s >! (più grande del punto esclamativo).


2 per risposta № 2

Dalla manpage di bash:

Se l'operatore di reindirizzamento è> |, o ilreindirizzamento l'operatore è> e l'opzione noclobber del comando incorporato set non è abilitata, viene tentato il reindirizzamento> anche se il file chiamato esiste per parola