Tcl: delete dead symbol link

风行水上 @ 2013-10-23 16:38:58
标签:

    Linux文件系统中,对于一个死链接(dead symbol link)

    • file exists 返回 0
    • file type 返回 "link"

    似乎删除这个死链接可以用如下命令

    if { ![file exists $file] && [file type $file] eq "link" } {
      file delete $file
    }
    
    #--OR--#
    
    if { [file type $file] eq "link" && ![file exists $file] } {
      file delete $file
    }
    

    但如果连这个symbol link文件也不存在的话,上面的代码都会导致file type错误。

    经实验,其实只要这样做就可以了:

    if { ![file exists $file] } {
      file delete $file
    }
    

    利用的是file delete对不存在的文件也不会触发错误的特点。

    TODO: 这算不算是一个bug呢?

    标签:

      分享到:
      comments powered by Disqus

      29/33ms