unlink と remove

コメント欄より。

わたしの場合、remove は「削除する」というイメージで、
unlink は「( 結合しているものを ) 外す」というイメージ。
英単語から連想する動作は別なのに〜って
ただそれだけなんですよ。

ファイルの削除ってのは大抵の場合、親ディレクトリにある自身のエントリを削除することなので、そう考えるとファイルの削除は確かに unlink で、結局一緒なんではないかと思う。ていうか、unlink って随分昔からあるシステムコールだと思うのだが。
でも、実は最近の POSIX 的には unlink と remove は違うものらしい。remove は対象が ファイルだと unlink、ディレクトリだと rmdir を呼ぶものとのこと。Python のコードだとこんな感じか。

import os.path

def remove(path):
    if os.path.isdir(path):
        return rmdir(path)
    elif os.path.isfile(path):
        return unlink(path)
    else:
        return False

Linux だとこういう実装は libc6 からで、libc5 以前は remove == unlink だった様子。POSIX のほうが改訂されたのかな。
まぁ、でもコメントで指摘されているとおり、Python のマニュアルには os.remove と os.unlink は同じものという記述があるので、「2.5 なら直っているかもしれない」なんて書く前にマニュアルを読めという話であったりもする。