是否可以通知/警告当前路径不再是有效的符号链接?

是否可以通知/警告当前路径不再是有效的符号链接?

假设我们有./a./b目录。然后我们使用ln -s a x并输入它cd xpwd创建一个符号链接x

然后在另一个终端中我们更改 ,x使其指向b。但第一个仍然会返回,x因为pwd它不再一致。

那么,如果当前路径是过时的符号链接,当前终端(bash)是否有办法发出警报/警告?

答案1

这是一种方法,它利用 bash 进行命令扩展来$PS1测试提示符中是否有相同的 inode .$PWD

PS1='$([[ $(stat -Lc%i $PWD 2>/dev/null) == $(stat -c%i .) ]] || echo "\[\e[1;31m\]PWD invalid or changed \[\e[m\]")'"$PS1"

答案2

我不认为仅通过常规 Bash 就可以实现此目的。您可以进行设置inotify,使其监视给定目录,然后通常通过电子邮件通知用户,但也有可能通过管道将这些消息返回到用户的 shell/环境中。

但这些通知的范围很广,因为它们只会在链接更改/损坏时才发送给用户,它们不会与上下文相关,即只有当用户实际位于这些目录中时才会发送它们。

例子

1号航站楼:

$ mkdir $HOME/tst
$ inotifywait -mr $HOME/tst
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.

2 号航站楼:

$ mkdir somedir

1号航站楼:

/home/saml/tst/ CREATE,ISDIR somedir
/home/saml/tst/ OPEN,ISDIR somedir
/home/saml/tst/ CLOSE_NOWRITE,CLOSE,ISDIR somedir

2 号航站楼:

$ rmdir somedir

1号航站楼:

/home/saml/tst/ DELETE,ISDIR somedir
/home/saml/tst/somedir/ DELETE_SELF

相关内容