LoginSignup
31
26

More than 5 years have passed since last update.

CLOBBER無効時にリダイレクションでファイルを上書きするには>|を使う

Last updated at Posted at 2013-09-25

シェルで > を使うと標準出力をファイルに書き込めますが、意図せずファイルを上書きしてしまう危険があるので、これができないようにしている人も多いのではないでしょうか。

setopt noclobber

これを設定していると既にファイルが存在する場合エラーになります。

$ echo foo > hoge
$ ls
. .. hoge
$ echo foo > hoge
zsh: file exists: hoge

これはこれで嬉しいのですが、時にはファイルが存在することを理解した上で、あえて上書きしたい場合もあります。そういう場合は >|>! を使います。

$ ls
. .. hoge
$ echo bar >! hoge
$ cat hoge
bar

さらに >> でファイルに追記できますが、これもファイルが存在しない場合はエラーが発生してしまいます。

$ echo foo >> huga
zsh: no such file or directory: huga

ファイルが存在しない場合は新規作成したい場合(clobberが有効な状態のときの >> と同じ挙動)にするには先ほどと同様に >>|>>! を使います。

$ echo foo >>! huga
$ cat huga
foo
31
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
26