Die Zwischenablage von Bash ist intern für Bash, Bash stellt keine Verbindung zum X-Server her.
Sie können die Bedeutung ändern, M-w
um die Auswahl zusätzlich zur internen Zwischenablage von bash in die X-Zwischenablage¹ zu kopieren¹. Die Integration von bash ist jedoch ziemlich locker, und ich glaube nicht, dass es eine Möglichkeit gibt, über Bash-Code auf die Regionsinformationen oder die Zwischenablage zuzugreifen. Sie können eine Tastenkombination erstellen, um die gesamte Zeile in die X-Zwischenablage zu kopieren.²
if [[ -n $DISPLAY ]]; then
copy_line_to_x_clipboard () {
printf %s "$READLINE_LINE" | xsel -ib
}
bind -x '"\eW": copy_line_to_x_clipboard'
fi
Wenn Sie ausgefallene Dinge in der Shell tun möchten, wechseln Sie zu zsh, das (neben anderen Vorteilen) eine weitaus bessere Integration zwischen dem Zeileneditor und der Skriptsprache bietet.
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
¹
Gnome hat keine spezielle Zwischenablage, dies ist allgemein für X.
²
Ab Bash 4.1 gibt es einen Fehler im Schlüsselparsing-Code: Schlüsselsequenzen, an die gebunden ist, bind -x
dürfen nicht länger als zwei Zeichen sein. Ich denke, Bash 4.2 behebt einige Fälle von längeren Präfixen, aber nicht alle; Ich habe die Details nicht recherchiert.