Linuxのコマンドラインで、うっかりファイルを上書きしてしまった経験はありませんか?
例えば、以下のような単純なコマンド。
$ echo "hello" > important.txt
これを実行すると、important.txt の中身は一瞬で上書きされ、元に戻せなくなります。
そこで便利なのが set -o noclobber
noclobber は リダイレクトによるファイルの上書きを防ぐ シェルのオプションです。
設定方法は超シンプル。
$ set -o noclobber
これだけで、既存ファイルに対して > を使った単純なリダイレクトはエラーになります。
試してみよう
$ echo "test" > important.txt
zsh: file exists: important.txt
上書きを防いでくれました!
強制的に上書きしたいときは?
上書きが必要な場合は >| を使います。
$ echo "force" >| important.txt
これなら、明示的に「本当に上書きする」と伝えることができます。
解除したいとき
$ set +o noclobber
おすすめ
• .bashrc や .zshrc に追記しておくと、常に有効になります。
# ~/.zshrc
set -o noclobber
まとめ
操作 | 動作 |
---|---|
set -o noclobber | 上書き防止 |
set +o noclobber | 上書き防止を解除 |
リダイレクトは日常的に使う分、事故も多いです。
大事なファイルを守るためにも noclobber を習慣にしておくと安心です。
コメント