Bash의 클립 보드는 bash 내부에 있으며 bash는 X 서버에 연결되지 않습니다.
할 수있는 일은 M-w
bash의 내부 클립 보드뿐만 아니라 선택 항목을 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가 더 긴 접두사를 해결하지만 전부는 아닙니다. 자세한 내용은 조사하지 않았습니다.