我得到了打開文件的腳本.html
,但我想將其更改為僅在文件尚未打開時才打開它。
有誰知道為了實現這一目標必須添加一些行?
#!/bin/bash
fileFragment=$"*project/html/index.html"
fullPath=$(find ../ -path $fileFragment)
xdg-open $fullPath &
編輯
我想要一個通用的解決方案,這就是為什麼我讓問題如此簡單,它與瀏覽器無關,它與我使用打開的任何文件有關xdg-open
,我已經通過提供此示例指定了它,我不想再指定它瀏覽器。
但如果沒有簡單的通用解決方案,那麼我寧願為我的具體情況找到一個答案,而不是:所以在我的例子中,我使用的是 Firefox。
答案1
以下解決方案僅適用於以下命令繼續跑直到您關閉程式/選項卡。不幸的是,大多數 GUI 程式和
xdg-open
.對於 Firefox 來說,可以取得目前開啟的 URL 列表和grep
它,但這既不是通用的也不是理想的解決方案。至於測試程式是否正在運行,請參見這個問題。
您可以使用lockfile
來自procmail
包裹。作為它的man
頁面有一個與您的用例完全匹配的範例,我將引用它:
假設您要確保對「重要」檔案的存取是序列化的,即不應允許超過一個程式或 shell 腳本存取它。為了簡單起見,我們假設它是一個 shell 腳本。在這種情況下你可以這樣解決:
... lockfile important.lock ... access_"important"_to_your_hearts_content ... rm -f important.lock ...
現在,如果所有存取「重要」的腳本都遵循此準則,那麼您可以放心,在
lockfile
和rm
命令之間最多會執行一個腳本。
預設情況下,所有其他腳本將等待檔案再次解鎖,預設每八秒進行一次測試(例如更改lockfile -5 important.lock
為五秒)。如果你只是想檢查它是否被鎖定,你可以使用經典test
命令:
if [ -e important.lock ]; then
# stuff to do if locked
else
# stuff to do if not locked
fi