gpt4 book ai didi

bash - Linux shell : test if current directory has been deleted in case of it's re creation

转载 作者:行者123 更新时间:2023-11-29 09:27:05 25 4
gpt4 key购买 nike

我知道这不是通常要在这里问的问题,但可能有人已经发现了测试它的技巧。

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

我知道 cd . 可以将当前目录的句柄恢复为创建的句柄。

在调用 cd . 之前,有没有办法测试终端在删除状态下持有的当前目录句柄?

最佳答案

由于竞争条件,测试这种情况不是一个好主意。

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

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 调用。

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

关于bash - Linux shell : test if current directory has been deleted in case of it's re creation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53469146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com