
次のように、選択内容をクリップボード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