回答:
最も簡単な解決策は、おそらくテキストエディターをバッファーとして使用し、そこで内容を再確認してから、テキストエディターからターミナルにコピーすることです。このためにTextEditを使用する場合は、URLではなくリンクとしてリンクを貼り付けるなどの問題を回避するために、プレーンテキストモード(書式メニュー→ プレーンテキストの作成 ;⇧⌘T)であることを確認する必要があります。
もう1つ注意すべき点は、Bashは改行文字の前にあるすべてを実行しようとすることです。そのため、テキストブロックをコピーする場合は、選択範囲をライン。
あなたはこれを求めている:
これではない:
もちろん、テキスト内に改行(つまり複数の段落)を含むものをコピーする場合は、選択範囲を手動で編集する必要があります。
ブラケットペーストは、端末が何かを入力するのではなく、貼り付けたことをシェルに通知する機能です。そのため、シェルはEnterキーを押すまでコマンドを実行できません。
Terminal.appはこれをサポートしていますが、すべてのターミナルがサポートしているわけではありません。
同様に、すべてのシェルがサポートしているわけでもありません。OS Xに付属しているbashのバージョンは、ブラケットペーストをサポートしていません(執筆時点では、v3.2.57です)。
ただし、zshはブラケットペーストをサポートしています。
Zshは、ほとんどの場合bashと互換性があり(スクリプトは、おそらく何らかのあいまいな機能を使用しない限り、おそらく動作します)、多くの点で優れています。たとえば、複数行のコマンド編集も可能です。
あなたはこの小さなBashスクリプトをあなたのどこかに置くことができますPATH
:
#!/bin/bash
read -p "Are you sure you wish to execute \`$(pbpaste)\`? (Y/n) "
[[ $REPLY =~ ^[Yy]?$ ]] && pbpaste | bash
/usr/local/pbexecute
たとえば、これらのコンテンツを配置して実行可能にするpbexecute
と、コマンドラインから安全に実行でき、クリップボードのコンテンツを実行する前に確認が求められます。
別のアプローチは、シェル内からクリップボードの内容を使用してテキストエディターを起動し、終了時に編集された内容を自動的に実行することです。例えば:
#!/bin/bash
PBTEMP=$(mktemp -t pbtemp)
pbpaste > $PBTEMP
nano -t $PBTEMP
source $PBTEMP
rm $PBTEMP
Ctrl
代わりにCmd
。また、実行せずset -o emacs
に使用するよう$EDITOR
です。ありがとう!これは完璧です。