bash와 X11간에 클립 보드 공유


12

에서 이 스레드 X11에서 클립 보드에, 이전에 그놈 터미널에서 마우스로 선택되어있는 텍스트를 복사하는 방법 상단 응답을 보여줍니다.

내 질문은 : bash set-mark 및 키보드 단축키 복사 (예 : set-mark+ M-w)를 사용하여 터미널에서 텍스트를 복사한다고 가정 해보십시오 . 이 클립 보드를 X11과 공유 할 수 있습니까?

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


gnome-terminal에서 Ctrl + Shift + C 및 Ctrl + Shift + V를 입력하여 시스템 클립 보드에 복사하여 붙여 넣을 수도 있습니다.
거짓말 라이언

2
이 게시물을 참조하십시오 stackoverflow.com/questions/994563/… 그러나 그것은 나를 위해 작동하지 않습니다.
great q

답변:


10

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

할 수있는 일은 M-wbash의 내부 클립 보드뿐만 아니라 선택 항목을 X 클립 보드 ¹에 복사 하는 의미를 변경하는 것 입니다. 그러나 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로 전환하십시오. 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

¹ 그놈에는 특별히 클립 보드가 없습니다. 이것은 X에 일반적입니다.
² bash 4.1부터 키 구문 분석 코드에 버그가 bind -x있습니다. 나는 bash 4.2가 더 긴 접두사를 해결하지만 전부는 아닙니다. 자세한 내용은 조사하지 않았습니다.


@Gilles 아이디어에 감사드립니다! 학습하고 전환해야 할 때가되었다고 생각합니다 zsh.
Amelio Vazquez-Reina

드디어! 무리 감사! 이것은 copy_line_to_x_clipboard내가 오랫동안 놓친 것입니다 : shift + insert와 동등한 사본. 내 취향에 너무 멀기 bind -x '"\C-x"때문에 ctrl-x ( )로 변경했습니다 Esc.
pbarill

터미널에는 일반적으로 메타 키가 있으며 기본적으로 alt 키에 바인딩됩니다. 문자를 누른 상태에서 문자를 입력하면 esc해당 문자 가 뒤 따르기 때문에로 입력 할 수 있습니다 alt-w.
DoMiNeLa10

7

@Gilles는 이미 훌륭한 답변을하였습니다. 의 존재를 언급하고 싶습니다. xclip단지 아무것도 출력하지 않고 터미널 출력을 X 클립 보드에 복사하는 매우 유용한 방법입니다.

$ cat /etc/passwd | xclip

1
xclip기본적으로 기본 버퍼에 복사 한다는 점에 유의하십시오 . 클립 보드를 사용하려면을 사용하십시오 xclip -selection clipboard.
Sparhawk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.