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 ...

Get Bash. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.