/ / Co robi> | zrobić w bash? - bash

Co robi> | zrobić w bash? - bash

W tym artykule, Jak utworzyć plik poprawki dla RPM, jest to polecenie:

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

Ponieważ dane wyjściowe są zapisywane do pliku, prosty operator przekierowania > działa dobrze dla mnie.

Czy ten operator oznacza przekierowanie do potoku? Jeśli tak, w jaki sposób przekierowanie do potoku różni się od przekierowania do pliku lub tylko potokiem do procesu?

Odpowiedzi:

6 dla odpowiedzi № 1

Wykonując polecenie

set -o noclobber

lub odpowiednik

set -C

możesz spowodować, że bash odmówi zapisu do istniejących plików podczas przekierowywania danych wyjściowych.

Za pomocą >| zamiast > zastępuje to ustawienie.

Referencje:

Lub uciekaj info bash (zakładając, że jest zainstalowany w Twoim systemie) i wyszukaj >|:

s>|

(Jeśli znasz ponownie csh i / lub tcsh, bash >| (większy niż pionowy pasek) jest podobny do csh >! (większy niż wykrzyknik).


2 dla odpowiedzi nr 2

Ze strony podręcznika bash:

Jeśli operatorem przekierowania jest> | lubprzekierowanie operator jest> i opcja noclobber do wbudowanego polecenia set nie jest włączona, próba przekierowania> jest podejmowana, nawet jeśli plik o nazwie według słowa istnieje.