O'Reilly logo

Bash. Receptury by Cameron Newham, JP Vossen, Carl Albing

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

2.22. Celowe nadpisanie pliku

Problem

Opcja noclobber powinna być włączona zawsze, poza przypadkami, kiedy rzeczywiście chcemy nadpisać dane pliku informacjami strumienia wyjściowego. Czy można szybko zmienić ustawiony sposób działania powłoki bash?

Rozwiązanie

Definiując przekierowanie strumienia wyjściowego, wystarczy zastosować operator >|. Powłoka bash zignoruje wówczas bieżące ustawienia (nawet jeśli opcja noclobber jest włączona) i nadpisze plik.

Rozważmy następujący przykład:

$ echo coś > mój.plik
$ set -o noclobber
$ echo kolejna informacja >| mój.plik
$ cat mój.plik
kolejna informacja
$ echo jeszcze raz > mój.plik
-bash: mój.plik: cannot overwrite existing file
$

Wykonanie drugiej instrukcji echo nie powoduje żadnego błędu. Natomiast trzecia ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required