代码之家  ›  专栏  ›  技术社区  ›  Andry

Linux shell:测试当前目录在重新创建时是否已被删除

  •  3
  • Andry  · 技术社区  · 7 年前

    我知道这不是一个常见的问题,但可能有人已经发现了一个测试的伎俩。

    我正在使用LinuxMintBash终端,有时会因为外部操作而重新创建当前目录。在外部重新创建当前目录后,所有命令 echo blabla > blabla 失败,因为终端将当前目录句柄保持为打开状态,而用户无法在已删除的目录中创建由已打开的句柄保持的文件,该句柄已从外部删除。

    我知道 cd .

    光盘。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Joshua    7 年前

    由于比赛条件,测试这种情况是一个坏主意。

    尽管如此,因为它很难捕捉,我给你以下:

    checkcd()
    {
        CINODE=$(ls -id . | cut -d ' ' -f 1)
        PINODE=$(ls -id `pwd` | cut -d ' ' -f 1)
        if [ $? -gt 0 ]
        then
               echo "Current directory is gone"
        elif [ $CINODE -ne $PINODE ]
        then
               echo "Current directory has been deleted and recreated; do cd `pwd` to fix"
        else
               echo "Current directory is ok"
        end if
    }
    

    好了,现在你可以把这个函数 .bashrc checkcd .

    如果你需要知道如何使用 你的答案是: https://unix.stackexchange.com/questions/129143/what-is-the-purpose-of-bashrc-and-how-does-it-work

    推荐文章