Оболочка Linux: проверить, был ли удален текущий каталог в случае его повторного создания - PullRequest
0 голосов
/ 25 ноября 2018

Я знаю, что здесь не принято спрашивать, но, возможно, кто-то уже нашел способ проверить это.

Я использую терминал Linux Mint bash, и время от времени текущий каталог становится воссозданным, потому чтовнешних действий.После того, как текущий каталог воссоздан снаружи, все команды, такие как echo blabla > blabla, терпят неудачу, потому что терминал держит текущий дескриптор каталога открытым, и пользователь не может создавать файлы в удаленном каталоге, удерживаемом открытым дескриптором, который стал удаленным снаружи.

Iзнаю, cd . может восстановить дескриптор текущего каталога обратно в созданный.

Есть ли способ проверить дескриптор текущего каталога, хранящийся в терминале в удаленном состоянии, перед вызовом cd .?

1 Ответ

0 голосов
/ 25 ноября 2018

Из-за условий гонки тестирование для этого условия - плохая идея.

Тем не менее, поскольку его трудно поймать, я даю вам следующее:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...