'xclip'에 대한 파이프는 bash 스크립트 종료 후에도 유지되지 않습니다.

'xclip'에 대한 파이프는 bash 스크립트 종료 후에도 유지되지 않습니다.

다음과 같이 선택 항목을 클립보드 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

관련 정보