./a
そしてディレクトリがあるとしましょう./b
。次に、次を使用しln -s a x
て入力してシンボリックリンクを作成します。cd x
pwd
x
次に、他の端末でをx
指すように変更しますb
。ただし、最初の項目はもはや一貫性がなくなったx
ため、まだ返されます。pwd
もしそうなら、現在のルートが廃止されたシンボリックリンクである場合、現在の端末で警告/警告を発行する方法はありますか?
答え1
$PS1
以下は、bashコマンド拡張を利用して同じ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
普通のバッシュだけではこれはできないと思います。特定のディレクトリを監視し、通常は電子メールでユーザーに通知するように設定できますが、inotify
これらのメッセージをユーザーのシェル/環境に再パイプすることもできます。
ただし、これらの通知はリンクが変更または切断された場合にのみユーザーに送信されるため、範囲が広くなります。状況に敏感ではありません。つまり、ユーザーが実際にこれらのディレクトリにある場合にのみ送信されます。
はい
ターミナル1:
$ mkdir $HOME/tst
$ inotifywait -mr $HOME/tst
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
NO2。ターミナル:
$ mkdir somedir
ターミナル1:
/home/saml/tst/ CREATE,ISDIR somedir
/home/saml/tst/ OPEN,ISDIR somedir
/home/saml/tst/ CLOSE_NOWRITE,CLOSE,ISDIR somedir
NO2。ターミナル:
$ rmdir somedir
ターミナル1:
/home/saml/tst/ DELETE,ISDIR somedir
/home/saml/tst/somedir/ DELETE_SELF