Linux, FreeBSD, Juniper, Cisco / Network security articles and troubleshooting guides

It is currently Sat Sep 26, 2020 12:44 am

Message body:
Enter your message here, it may contain no more than 60000 characters. 

:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:
Font size:
Font colour
BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON
Disable BBCode
Disable smilies
Do not automatically parse URLs
Confirmation code
Confirmation code:
In an effort to prevent automatic submissions, we require that you enter both of the words displayed into the text field underneath.

Topic review - Linux Shell: Protecting against accidental output redirection and file overwrite
Author Message
Post subject: Linux Shell: Protecting against accidental output redirection and file overwrite  |  Post Posted: Mon Aug 24, 2009 10:14 am
Redirecting standard output/error in a Linux/BSD shell can very easy overwrite a file, removing it's content, making it impossible to recover (unless there's a backup).

To prevent this sh, bash and ksh shells implement an evironment variable called noclobber.

# cat tmp.file
If you use a lot of file redirection in your scripts it's quite easy to overwrite existing files accidentaly.
To prevent this, most shells implement the noclobber environment variable.

# echo "Overwritten content">tmp.file
# cat tmp.file
Overwritten content

Checking if noclobber is activated in current shell:
# set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

Activating shell noclobber environment variable:
# set -o noclobber; set -o | grep noclobber
noclobber       on

At this point, accidental output redirections cannot harm. An error will occur when this will happen:
# echo "2nd Overwritten content">tmp.file
bash: tmp.file: cannot overwrite existing file
Jump to:  
News News Site map Site map SitemapIndex SitemapIndex RSS Feed RSS Feed Channel list Channel list

Delete all board cookies | The team | All times are UTC - 5 hours [ DST ]