존재하다이 스레드상단 답변은 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