当我尝试grep模式并写入文件时,有时它会抱怨文件bar.txt已经存在,所以我必须使用>>
而不是>
来覆盖它。
grep 'pattern' foo.txt >> bar.txt
但是如果文件不存在,使用>>
就会抱怨没有这样的文件或目录。有没有办法让shell自动做出自己的决定?如果不存在,请创建一个文件。如果存在,则覆盖。
答案 0 :(得分:0)
> name
...
If the shell variable noclobber is set, then the file must not
exist or be a character special file (e.g., a terminal or
`/dev/null') or an error results. This helps prevent acciden-
tal destruction of files.
...
>> name
...
Like `>', but appends output to the end of name. If the shell
variable noclobber is set, then it is an error for the file not
to exist, unless one of the `!' forms is given.
所以...听起来好像你有" noclobber"集。
% set noclobber
% echo foo >> bar
bar: No such file or directory.
% echo foo > bar
% echo foo > bar
bar: File exists.
% unset noclobber
% echo foo > bar
如果在.tcshrc
或.cshrc
或.login
中设置了此特殊shell变量,则可以取消设置。或者,如果默认情况下处于打开状态或在系统范围的shell启动文件中设置,只需在rc文件中附加一行:
unset noclobber
你应该好好去。