» で追記できない
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
\第一線のプログラマーの行動原理を学べる!/