我如何在unix中允许破坏

我如何在unix中允许破坏

我在 bash shell、BSD unix、macos 下,但我认为这也适用于许多其他 unix shell。该noclobber选项有时很有用:

> find . -name z
> set -o noclobber
> echo "dog" > z
> echo "dog" > z
-bash: z: cannot overwrite existing file

但是如何在不启动新 shell 的情况下取消设置呢?奇怪的是,bash undo set noclobberunix un-do set noclobber、 和类似的搜索并没有很快找到答案。

以下均无效:

> unset -o noclobber
-bash: unset: -o: invalid option
unset: usage: unset [-f] [-v] [name ...]
> unset noclobber
> echo "dog" > z
-bash: z: cannot overwrite existing file
> set -o clobber
-bash: set: clobber: invalid option name

答案1

人们可以在以下位置找到答案:如何撤消“set -x”?,这样我们就有

> set +o noclobber
> echo "dog" > z
> 

这有点违反直觉:+关闭某些东西;-打开它。

当然,unset noclobber只会删除我可能创建的任何名为 的变量noclobber。这对 UNIX 选项没有影响。

相关内容