我有一个交互式fzf
bash 脚本,可以将我的选择放入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