Linux

到“xclip”的管道無法在 bash 腳本終止後繼續存在

  • May 29, 2020

我有一個互動式fzfbash 腳本,可以將我的選擇放入X剪貼板,如下所示:

#!/bin/bash

cat /path/to/file.txt | fzf | xclip -sel p -sel s -sel c

exit 0

文本文件包含一些行:

one
two
three
four
five

如果我從終端模擬器中手動啟動腳本:bash path/to/script.sh,則xclip永久儲存管道內容,即使在關閉終端模擬器後也可以粘貼。

但是,我想將它綁定到我的 DE 中的鍵盤快捷鍵以按需使用,因此我需要將它與終端仿真器命令一起使用,例如:mate-terminal -x bash /path/to/script.sh. 它可以正常打開,但是一旦在我做出選擇後終止,xclip內容就會失去並且無法再粘貼。如果我用 延遲腳本的終止sleep 5,那麼當終端仍然打開時,粘貼管道內容可以工作,但一旦終止,它就會失去。

我需要一種方法讓X剪貼板即使在終端模擬器關閉後也能保留內容。

使用-loops 0選項(預設)。使 X 選擇無限期可用,直到另一個程序請求 X 選擇的所有權。

但是,將程序綁定到鍵盤快捷鍵會在 xclip 守護程序返回後殺死它。從終端啟動程序時,此行為不存在。該-verbose選項使程序在前台執行,這也導致終端保持不變。

為了保持xclip守護程序執行,沒有可見的終端視窗,一個選項是使用該nohup程序。它執行一個命令,該命令將 init 程序作為 PPID(例如 systemd)。

#!/bin/bash

cat /path/to/file.txt | fzf | nohup xclip -loops 0 -sel p -sel s -sel c

引用自:https://unix.stackexchange.com/questions/589556