xclipにパイプするときに新しい行はありません。

xclipにパイプするときに新しい行はありません。

何かを入力するたびに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; }

(ここでコマンドは削除を置き換えます。みんな末尾の改行文字と一部のシェルでは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)方法が間違っています。

関連情報