Bash와 X11 간에 클립보드 공유

Bash와 X11 간에 클립보드 공유

존재하다이 스레드상단 답변은 gnome 터미널에서 마우스로 이전에 선택한 텍스트를 X11의 클립보드에 복사하는 방법을 보여줍니다.

내 질문은 다음과 같습니다. bash 설정 플래그를 사용하여 터미널에서 텍스트를 복사하고 키보드 단축키(예: set-mark+ M-w)를 복사한다고 가정해 보겠습니다. 이 클립보드를 X11과 공유할 수 있나요?

편집하다: 원래 질문에서 GNOME과 클립보드를 공유하는 것에 대해 이야기했지만 Gilles가 아래에서 지적했듯이 GNOME에는 특별히 클립보드가 없으므로(X에 일반적임) 질문을 업데이트했습니다.

답변1

Bash의 클립보드는 bash 내부에 있으며 bash는 X 서버에 연결되어 있지 않습니다.

M-w당신이 할 수 있는 일은 선택 항목을 X 클립보드와 bash의 내부 클립보드에 복사하는 것의 의미를 변경하는 것입니다. 그러나 bash 통합은 다소 느슨하며 bash 코드에서 영역 정보나 클립보드에 액세스할 수 있는 방법이 없다고 생각합니다. 키바인딩을 통해 전체 줄을 X 클립보드에 복사할 수 있습니다. ²

if [[ -n $DISPLAY ]]; then
  copy_line_to_x_clipboard () {
    printf %s "$READLINE_LINE" | xsel -ib
  }
  bind -x '"\eW": copy_line_to_x_clipboard'
fi

셸에서 멋진 작업을 수행하려면 라인 편집기와 스크립팅 언어 간의 더 나은 통합이 가능한 zsh로 전환하세요.

if [[ -n $DISPLAY ]]; then
  x-copy-region-as-kill () {
    zle copy-region-as-kill
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  x-kill-region () {
    zle kill-region
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  zle -N x-copy-region-as-kill
  zle -N x-kill-region
  bindkey '\C-w' x-kill-region
  bindkey '\ew' x-copy-region-as-kill
fi

1 Gnome에는 X에 공통된 전용 클립보드가 없습니다.
2 bash 4.1부터 키 구문 분석 코드에 버그가 있습니다. 바인딩된 키 시퀀스의 bind -x길이는 2자를 넘을 수 없습니다. 나는 bash 4.2가 더 긴 접두어의 일부 사례를 수정했다고 생각하지만 아직 세부 사항을 조사하지 않았습니다.

답변2

@Gilles는 이미 좋은 답변을 주었습니다. xclip터미널 출력을 X 클립보드에 복사하는 데 매우 유용한 방법이기도 한 의 존재를 언급하고 싶습니다 . 무엇이든 파이프로 연결하면 됩니다.

$ cat /etc/passwd | xclip

관련 정보