Bash
管道到 xclip 時沒有新行
有什麼我可以做的,這樣每當我將某些東西輸入
xclip
其中時,最後都不包含新行嗎?作為一種解決方法,我正在使用
echo -n $(CMD_TO_COPY) | xclip
,但是每次我想複製某些內容時都必須輸入所有這些內容有點煩人。
根據手冊頁,
xclip
有一個-rmlastnl
(-r
) 選項可以完全滿足您的要求:echo hello | xclip -i -r
儘管
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
在任何情況下,在您的方法中使用
echo
或不帶引號的命令替換*echo -n $(CMD_TO_COPY)
*都是不正確的。