Protecting File Content During I/O Redirection with noclobber in Bash shell
How to use noclobber during redirection to avoid overwriting files
Redirecting standard output to an existing ﬁle overwrites the previous ﬁle content, which results in data loss. This process of overwriting existing data is known as clobbering. To prevent an overwrite from occurring, the shell supports a noclobber option.
When the noclobber option is set, the shell refuses to redirect the standard output to the existing ﬁle and displays an error message to the screen. The noclobber option is activated in the shell using the set command. For example:
$ set -o noclobber $ set -o | grep noclobber noclobber on
$ ps -ef > file_new $ cat /etc/passwd > file_new bash: file_new: cannot overwrite existing file $
Deactivating the noclobber Option
Tempororily disable noclobber
To temporarily deactivate the noclobber option, use the >| deactivation syntax on the command line. The noclobber option is ignored for this command line only, and the contents of the ﬁle are overwritten.
$ ls -l >| file_new
Disable noclobber on a Bash shell
To deactivate the noclobber option, perform the following commands:
$ set +o noclobber $ set -o | grep noclobber noclobber off $ ls -l > file_new $