Ta bash
noclobber
opcja zapobiega zastępowaniu plików przez przekierowanie. Ale czasami naprawdę chcę. csh
ma podobną opcję i można ją obejść, umieszczając !
przed nazwami plików. Czy jest na to jakiś sposób bash
?
Tak. Dołącz |
do operatora przekierowania, aby utworzyć >|
. Jest to zawarte w § 3.6.2 podręcznika Bash Reference , qv
Jeśli operatorem przekierowania jest „>”, a opcja noclobber do wbudowanego zestawu została włączona, przekierowanie zakończy się niepowodzeniem, jeśli plik, którego nazwa wynika z rozwinięcia słowa, istnieje i jest plikiem zwykłym. Jeśli operatorem przekierowania jest „> |” lub operatorem przekierowania jest „>”, a opcja noclobber nie jest włączona, nastąpi próba przekierowania, nawet jeśli istnieje plik o nazwie słowo.
Odwiedź ten samouczek na temat opcji noclobber . To może być pomocne.
Użyj |
(„potoku”) w bash
, zamiast !
(„huku”), tak jak byś to zrobił csh
. Na przykład:
echo done >| out
Należy pamiętać, że jeśli chcesz przekierować stderr
do stdout
i przesłonić noclobber
, ani >|&
też nie &>|
będzie działać; zamiast tego użyj długiego formularza:
cmd-with-errors done >| out 2>&1
err &>| out
nie działa?