FreeBSD - Tutorials, Security
Home   Archives   Sitemap   About   Contact

How to prevent accidental file overwrites from output redirection

Home NEW! Unix Forum News 100 Tips and Tricks Website Development Server Operating Systems Databases
 Ivorde.ROarrow Server Operating Systems arrowAdministration GuidesarrowHow to prevent accidental file overwrites from output redirection 

Article Sections

    Hello, Guest !
User name:
Password:
 
Google

 FreeBSD Tutorials
 Linux LVM Commands
 Free Shell Accounts
 FreeBSD Project
 FreeBSD Handbook
 The OpenBSD Project
 Distrowatch
 FreeBSD Handbook


Apache Webserver Home Page

Blog, intrebari si raspunsuri despre Leasing

Posted on: 25 Mar 2008
Author: mandrei
Section: Server Operating Systems | Administration Guides
Views: 241
Comments: 0 (Add)

How to prevent accidental file overwrites from output redirection
How to prevent accidental file overwrites from output redirection, redirecting output, prevent accidental overwrites of files




It is possible (and very easy) to delete a file's content just by a simple output redirection to that file.

# echo "Some output" > output.o

If output.o is a regular file and it contained some information before this, you can say "Good bye" to it, unless you have another copy stored somewhere on the filesystems/backup media.

Let's say that output.o already contains some information and we do the redirection:

# cat output.o
something
# echo "another text" >| output.o
# cat output.o
another text

I've just overwritten the file. The information stored is gone.

To prevent accidental file overwrites from output redirection, use the noclobber variable (type: set -o noclobber in your shell). It will keep you from accidentally overwrite files.

# set -o noclobber
# cat output.o
another text
# echo "something back" > output.o
output.o: cannot overwrite existing file

... and there you have it.. :)

Appending output to an existing file

Same as redirecting, only that instead of ">" we use ">>"

# echo "something back" >> output.o && cat output.o
another text
something back

Overwrite a file's content even if noclobber variable is set

(instead of command > file , use command >| file )

# echo "something back" >| output.o && cat output.o
something back

To have noclobber variable set all the time add the line set -o noclobber line to your shell's profile or /etc/profile so that all users will have it (of course they can overwrite it by deactivating noclobber: set +o noclobber).

Pay great attention. NOCLOBBER variable can save you from accidental file overwrites from output redirection, but not from forced redirection (>|)

Also read: How to empty/delete file content in Linux/BSD/Unix

Bookmarks: Echo "How to prevent accidental file overwrites from output redirection" around:
del.icio.usdiggFurlYahooMyWebGoogleBookmarksFaceBookTechnocratti
-------------------advertising-----------------

Other articles in Server Operating Systems / Administration Guides
» How to empty/delete file content in Linux/BSD/Unix
» FreeBSD Skeleton Directory - FreeBSD SKEL files
» How to change a user's password in AIX with the output from ECHO command
» Playing with GREP: grepping out lines that start with empty space
» FreeBSD Cron - NSSWITCH(nss_method_lookup) errors




Contact webmaster regarding this article
Register or Login to post your article
Hello, Guest ! You can Login or Register to www.ivorde.ro!

 Post comment:

Name:
Title:
Comment:
Please type the word you see in the image (anti-spam verification). Refresh the page if you don't understand the word.
Verification code
Allowed HTML Tags for comments:<p><strong><em><u><h1><h2><h3><h4><h5><h6><img><li>
<ol><ul><span><div><br><ins><del>

0 comment(s) to How to prevent accidental file overwrites from output redirection:

   Latest topics on the forum:
Openssl: Commandline base64 string encoding
Using echo, netcat(nc) and tr to create an HTTP connection
Unix shell - using TR to replace new lines with spaces
SED how to remove multiple white spaces from a string
Starting nginx: [emerg]: directive "rewrite" is not terminated by ";"
Converting PhpBB-SEO Apache RewriteRule to Nginx rewrite
MySql doesn't start: libexec/mysqld: File './mysql-bin.index' not found (Errcode: 13)
/usr/bin/ld: cannot find -lltdl PHP Compiling fails on Centos/Red Hat
How to install apache22 on FreeBSD with proxy modules
Windows XP Microphone volume drops unexpectedly / auto adjusts to low value
 
   Most viewed articles:
How to clear/reset DNS cache on Windows XP / Linux - 15020 views
How to remove first/last character from a string using SED - 14631 views
Reloading /etc/profile - how to reload Unix /etc/profile - 11820 views
Substitute strings in files with perl, sed or vi(m) - 11000 views
How to change a user's password in AIX with the output from ECHO command - 7684 views

   Latest 10 articles:
FreeBSD - Collect installed hard disk drive information - 19 Mar 2009
Set up FTP PROXY via command line in Linux/FreeBSD - 19 Mar 2009
Set up HTTP PROXY via command line in Linux/FreeBSD - 19 Mar 2009
Qmail relay to smarthost: How to route all mail to a smarthost - 03 Feb 2009
EXIM 4 relay to smarthost: How to route all mail except local domain - 03 Feb 2009
Windows XP: print LISTEN ports and network connections using netstat - 30 Jan 2009
qmail qmail-scanner/clamav qmail-inject: fatal: qq temporary problem / clamdscan: corrupt or unknown clamd scanner error or memory/resource/perms problem - exit status 512/2 - 05 Dec 2008
How to cut out first last n characters from each file name, from a filelist - 04 Nov 2008
Mozilla Firefox3 is now released - 18 Jun 2008
How to switch lower case to upper case and upper case to lower case in a string - 17 Jun 2008


Archives
» 2007  |  June  |  October  |  November  |  December
» 2008  |  January  |  February  |  March  |  April  |  May  |  June  |  November  |  December
» 2009  |  January  |  February  |  March



Home | Archives | Sitemap | About | Contact

Designed and developed by Andrei Manescu. Optimized for Mozilla Firefox.  
Copyright 2007 Andrei Manescu
All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by those who posted them.
Valid W3 Document Valid XHTML 1.0 Transitional Valid CSS! The FreeBSD Project Viewable With Any Browser