![管道输入 xclip 时没有新行](https://linux22.com/image/209167/%E7%AE%A1%E9%81%93%E8%BE%93%E5%85%A5%20xclip%20%E6%97%B6%E6%B2%A1%E6%9C%89%E6%96%B0%E8%A1%8C.png)
我可以做些什么,以便每当我将某些内容输入其中时,xclip
末尾不会包含新行?
作为一种解决方法,我正在使用echo -n $(CMD_TO_COPY) | xclip
,但每次我想复制某些内容时都必须输入所有这些内容,这有点烦人。
答案1
根据手册页,xclip
有一个-rmlastnl
( -r
) 选项可以完全满足您的要求:
echo hello | xclip -i -r
答案2
尽管xclip
由于版本 0.13 确实有一个选项可以删除尾随换行符,正如 larsks 已经指出的那样,您也可以始终定义一个函数来执行您想要的处理,例如:
clipboard() { printf %s "$(cat -- "$@")" | xclip -sel c; }
clipboard() { printf %s "$(cat -- "$@")" | xsel -b; }
(这里,命令替换删除全部尾随换行符,在某些 shell 中bash
,包括所有 NUL 字符)。
或者只删除一个尾随换行符,如下xclip -r
所示:
clipboard() { cat -- "$@" | perl -pe 's/\n$// if eof' | xclip -sel c; }
并用作:
cmd | clipboard
clipboard <<< "$var"
clipboard some-file and-some-other