Depends on what you mean by really gone and also depends upon your file system, your os, and rm itself.
First: traditional Unix:
When you rm a file all that happens is that the directory entry is set to point at 0 instead of the inode it did point at, and the link count for the inode is decremented by one. If the link count has reached 0, and no process has the file open, then the inode itself is marked us unused, and the disk blocks that the file used are returned to the free list. If a process has the file open then the release of the inode and the reclaim of disk blocks waits until the process is done.
So, at this point, your data is still there until some other process needs disk blocks and these happen to get reused. If nothing asks for new blocks, or these blocks get put at the end of the free list, you might be able to recover the data by scrounging through the free list.
Secure Unix systems may zero disk blocks before releasing them to the free list; you wouldn't have any way to get your data if that was in effect.
Now: Some file systems have various schemes to keep "versions" of your data or to provide an undelete feature. In that case, older copies of your data maty still be there. However, even if your file system supports something like that, it may not be turned on by default: see
for example.
Linux ext2 file systems document an undelete in chattr but it isn't actually implemented at all
Spome systems mess with rm either by an alias or a binary to store the "deleted" file somewhere safe for a while.
Tony Lawrence
SCO Unix/Linux Resources
tony@pcunix.com