Opcja noclobber

  • noclobber - Zabezpiecza przed przypadkowym nadpisaniem istniejącego pliku w przypadku używania przekierowań

Opcja «noclobber»

Włączenie opcji

set -o noclobber

lub

set -C

Wyłączenie opcji

set +o noclobber

lub

set +C

Po włączeniu tej opcji jeśli w przekierowaniach > plik i >& plik plik istnieje, to zostanie wyświetlony błąd. Zabezpiecza to przed przypadkowym nadpisaniem istniejącego pliku.

Aby zapisać do istniejącego pliku należy wyłączyć opcję noclobber lub też użyć przekierowania >| plik.

Przykład:

#!/bin/bash
touch plik
set -o noclobber
ls > plik
ls >| plik
set +C
echo koniec > plik

Po wykonaniu powyzszego skryptu powinniśmy uzyskać błąd:

bash: plik: cannot overwrite existing file

Jest to związane z tym, że opcja noclobber była wlączona w momencie przekierowywania wyjścia z polecenia ls (a plik przecież istniał!).