Jak zastąpić opcję „noclobber” bash?


17

Ta bash noclobberopcja zapobiega zastępowaniu plików przez przekierowanie. Ale czasami naprawdę chcę. cshma podobną opcję i można ją obejść, umieszczając !przed nazwami plików. Czy jest na to jakiś sposób bash?

Odpowiedzi:


19

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.


3

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ć stderrdo 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

Czy wiesz dlaczego err &>| outnie działa?
Sanghyun Lee
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.