Właśnie widziałem to spisane;
$ some-command >| /tmp/output.txt
Rury pionowe są używane w standardowych przekierowaniach „przesyłanie” danych wyjściowych z jednego polecenia do drugiego, czy >|
w rzeczywistości jest całkowicie bezużyteczne, ponieważ byłoby takie samo jak >
w tym scenariuszu?
bash
io-redirection
pipe
jwbensley
źródło
źródło
>|
na: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…Odpowiedzi:
To nie jest bezużyteczne - to wyspecjalizowana forma zwykłego
>
operatora przekierowania (i być może mylące, nie ma nic wspólnego z rurami).bash
a większość innych współczesnych powłok ma opcjęnoclobber
, która zapobiega nadpisywaniu lub niszczeniu pliku, który już istnieje. Na przykład, jeślinoclobber
jest to prawda, a plik/tmp/output.txt
już istnieje, to powinno się nie powieść:Można jednak jawnie zastąpić ustawienie za
noclobber
pomocą>|
operatora przekierowania - przekierowanie będzie działać, nawet jeślinoclobber
jest ustawione.Możesz dowiedzieć się, czy
noclobber
jest ustawiony w bieżącym środowisku za pomocąset -o
.Dla nuty historycznej zarówno opcja „noclobber”, jak i jej funkcje obejścia pochodzą z
csh
(późnych lat 70.).ksh
skopiowałem go (wczesne lata 80.), ale użyłem>|
zamiast>!
. POSIX określiłksh
składnię (więc wszystkie powłoki POSIX, w tym bash, nowsze pochodne popiołu używane jako sh w niektórych systemach obsługują tę funkcję). Zsh obsługuje obie składnie. Nie sądzę, aby został dodany do jakiegokolwiek wariantu powłoki Bourne'a, ale mogę się mylić.źródło
sh
manoclobber
, od około maja 2002 r.