» で追記できない
zshで>>による標準出力のファイルへの追記をしようとするとエラーになった。
$ ls >> result.txt
zsh: no such file or directory: result.txt
出力先ファイルが無い場合にこのエラーが発生した。
原因:preztoでnoclobberオプションが有効になっていた
preztoを導入していると>>による新規ファイルへの追記できないようになる。
prezto内部でsetopt noclobberが実行されており、このコマンドによって以下の様になる。
>による既存ファイルの上書きを防ぐ>>による存在しないファイルへの書き込みを防ぐ
どちらも誤った操作による意図しないファイル操作を防ぐ。
対処
noclobberの設定を解除する
.zshrcなどでnoclobberの設定を解除する。
setopt clobber
上記を加えれば存在しないファイルへの>>での書き込みができるようになる。
preztoでnoclobberが有効になっている場合は、preztoの読み込みのあとで上記コマンドを実行する必要がある。
>>! もしくは>>|で追記する
noclobberの設定を残したまま一時的に書き込みたい場合は>>の代わりに>>!で強制書き込みできる。>>|も同じ。
$ ls >>! result.txt
$ ls >>| result.txt
\第一線のプログラマーの行動原理を学べる!/
