例えば Linux で下記のように標準出力をリダイレクトしようとしたときに、すでに出力先のファイルが存在する場合は、そのファイルの内容が上書きされてしまいます。
$ echo Hello > hoge.txt
こういったリダイレクトによるファイルの上書きを抑制するには、シェルオプションの noclobber
を有効化します(bash と zsh で共通です)。
有効化後に hoge.txt
が上書きされるような処理を実行すると、以下のようにエラーになります。
$ set -o noclobber
$ echo Hello > hoge.txt
zsh: file exists: hoge.txt
シェルオプションは、set -o
で有効化、set +o
で無効化できます。
bash では ~/.bashrc
、zsh では ~/.zshrc
に設定を追加しておくとよいでしょう。
set -o noclobber # noclobberを有効化(既存ファイルの上書きを防止)
set +o noclobber # noclobberを無効化(既存ファイルの上書きを許可)(デフォルト)
ちなみに、現在のすべてのシェルオプションの設定を確認するには以下のようにします。
$ set -o # on, off 表示
$ set +o # 設定コマンド表示