到“xclip”的管道无法在 bash 脚本终止后继续存在

到“xclip”的管道无法在 bash 脚本终止后继续存在

我有一个交互式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剪贴板即使在终端模拟器关闭后也能保留内容。

答案1

使用该-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

相关内容