我在 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 noclobber
、unix 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 选项没有影响。