一種のフィルタで「クリップボード」にコピーしたアイテムを実行する方法はありますか?理想的には、コピーした内容から末尾の改行文字を削除して端末で自動的に実行されないようにしますか?
関連テストをコピーするとこんな姿ですが、時々新しい行ということを忘れてしまうこともあります。
答え1
良い最新の端末サポートかっこ内に貼り付ける:端末の貼り付けコマンドを使用すると、クリップボードの内容の周りに特別なエスケープシーケンスが送信されます。シェルが角かっこ貼り付けをサポートしている場合は、制御文字を含むクリップボードの内容をそのまま貼り付け、特に末尾の改行はコマンドの実行をトリガーしません。
Zsh ≥5.1は角かっこ貼り付けをサポートし、デフォルトでオンになっています。旧バージョン教えることができる。 Bash ≥4.4は、追加した場合の角括弧の貼り付けをサポートします。set enable-bracketed-paste on
到着する~/.inputrc
。
端末またはシェルが角かっこ貼り付けをサポートしていない場合は、末尾の改行なしで貼り付けるシェル関数を定義できます。
zshでは、次のコマンドは、末尾の改行文字を引いたクリップボードの内容を取得して編集できるように表示します(複数行がある場合でも)。
print -z -- "`xsel -b`"
Bashでは、クリップボードの内容から末尾の改行文字を引いた内容を履歴スタックにプッシュできます。次に、Upインポートコマンドを押して編集します。
history -s -- "`xsel -b`"
答え2
はい、cat
ファイルに貼り付けるには、必要に応じて実行してから実行します。
この例の場合:
$ cat > tmp
[paste][Ctrl+D]
$ tr -d '\n' <tmp | xclip # this remove all "new line" characters
# and copy back to clipboard
答え3
バージョン0.13(2016-09年リリース)以降、正確に必要な作業を実行する文書化されていxclip
ないオプションがあるようです。つまり、テキストから最後の改行文字を削除することです。-r
バラよりhttps://github.com/astrand/xclip/issues/7。少なくともUbuntu 22.04では動作します。
答え4
@RSFalcon7 回答からインスピレーションを得て一行にできることに気づきました。
以下を使用してデフォルトのxsel
選択項目にコピー
cat | tr -d '\n' | xsel
[paste], 2 times[Ctrl-D]