csh中的重定向问题
redirection problems in csh
当我尝试 grep 模式并写入文件时,有时它会抱怨文件 bar.txt 已经存在,所以我必须使用 >>
而不是 >
来覆盖它.
grep 'pattern' foo.txt >> bar.txt
但是如果文件不存在,使用>>
它会抱怨没有这样的文件或目录。 shell 有没有办法自动做出自己的决定?如果不存在,则创建一个文件。如果存在,则覆盖。
> 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
如果这个特殊的 shell 变量是在您的 .tcshrc
或 .cshrc
或 .login
中设置的,您可以取消设置。或者,如果它默认打开或在系统范围 shell 启动文件中设置,只需在您的 rc 文件中添加一行:
unset noclobber
你应该可以开始了。
当我尝试 grep 模式并写入文件时,有时它会抱怨文件 bar.txt 已经存在,所以我必须使用 >>
而不是 >
来覆盖它.
grep 'pattern' foo.txt >> bar.txt
但是如果文件不存在,使用>>
它会抱怨没有这样的文件或目录。 shell 有没有办法自动做出自己的决定?如果不存在,则创建一个文件。如果存在,则覆盖。
> 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
如果这个特殊的 shell 变量是在您的 .tcshrc
或 .cshrc
或 .login
中设置的,您可以取消设置。或者,如果它默认打开或在系统范围 shell 启动文件中设置,只需在您的 rc 文件中添加一行:
unset noclobber
你应该可以开始了。