У меня есть этот скрипт, который открывает .html
файл, но я хочу изменить его так, чтобы он открывался только если он еще не открыт.
Кто-нибудь знает какие-нибудь строки, которые нужно добавить, чтобы добиться этого?
#!/bin/bash
fileFragment=$"*project/html/index.html"
fullPath=$(find ../ -path $fileFragment)
xdg-open $fullPath &
EDIT
Я хотел бы получить общее решение, поэтому я и оставил вопрос таким простым, это не о браузерах, это о любом файле, который я открываю с помощьюxdg-open
, я уже указал это, предоставив этот пример, я больше не хочу указывать это для конкретных браузеров.
Но если нет простого общего решения, то я бы предпочел получить ответ для моего конкретного случая, чем вообще никакого: Так что в моем случае я использую Firefox.
решение1
Следующее решение работает только для команд, которыепродолжать работатьпока вы не закроете программу/вкладку. К сожалению, это не относится к большинству программ с графическим интерфейсом и
xdg-open
. В случае Firefox можно было быполучить список открытых в данный момент URL-адресовиgrep
это, но это не универсальное и не идеальное решение. Что касается проверки того, запущена ли программа, см.этот вопрос.
Вы можете использовать lockfile
изprocmail
упаковка. Какего man
страницасодержит пример, точно соответствующий вашему варианту использования, я просто процитирую его:
Предположим, вы хотите убедиться, что доступ к файлу "important" является сериализованным, т. е. не более чем одной программе или скрипту оболочки должен быть разрешен доступ к нему. Для простоты предположим, что это скрипт оболочки. В этом случае вы можете решить это так:
... lockfile important.lock ... access_"important"_to_your_hearts_content ... rm -f important.lock ...
Теперь, если все скрипты, которые обращаются к «важному», следуют этому правилу, вы можете быть уверены, что между командами
lockfile
и будет выполняться не более одного скриптаrm
.
По умолчанию, каждый другой скрипт будет ждать, пока файл снова не будет разблокирован, проверяя каждые восемь секунд по умолчанию (измените на eg lockfile -5 important.lock
на пять секунд). Если вы просто хотите проверить, заблокирован ли он, вы можете использовать классическую test
команду:
if [ -e important.lock ]; then
# stuff to do if locked
else
# stuff to do if not locked
fi