端末セッションに貼り付けると、Enterキーを押さなくても、シェルがすぐにコマンドを実行します。
私はその振る舞いを無効にする方法を本当に知りません。
MacOS Yosemiteにプリインストールされているターミナルを使用しています。
bash
(の助けを借りてreadline
)修正されました。
端末セッションに貼り付けると、Enterキーを押さなくても、シェルがすぐにコマンドを実行します。
私はその振る舞いを無効にする方法を本当に知りません。
MacOS Yosemiteにプリインストールされているターミナルを使用しています。
bash
(の助けを借りてreadline
)修正されました。
回答:
bash
4.4以降およびサポートは、ラを貼り付け括弧という端末でxterm
、あなたが行うことができます。
bind 'set enable-bracketed-paste'
(または追加しset enable-bracketed-paste
、あなたに~/.inputrc
)
これが原因となり、コピー&ペースト入力した場合(つまり、バッファは次のように文字が含まれている場合、あなたはまだ問題を抱えている可能性があると解釈される代わりに、その中に文字のプロンプトに挿入されるように、バッファ^C
、^Z
およびお使いの端末エミュレータは、それらを除外していません) 。
zsh
バージョン5.1以降、デフォルトでこれが行われます。
他のシェルやターミナルについては、このようなクリップボードの乱用から自分を守るにはどうすればよいですか?も参照してください。
xterm
と思いますが、代わりに試すことができます。perl
リンクされた質問でスクリプトを試しましたか?
これは、「改行」文字を貼り付けるときに発生します。たとえば、複数の行を貼り付ける場合や、行末に改行を知らないうちにコピーした場合などです。私の知る限り、この動作を実際に無効にする方法はありませんが、それを軽減する方法があります。
最も簡単な方法は、一度に1行ずつコピーして最後の文字を取り除き、後で手動で追加することです。
または、the_velour_fogが以下に示すように、印刷されていない文字を表示するエディターに貼り付けて、改行なしで再選択することもできます。
GNU / Linuxディストリビューションには1つまたは2つの回避策がありますが、その概念をMacOSに移植できるかどうかはわかりません。とにかく、ここを見て、変更できるMacに同様のファイルがあるかどうかを確認してください。残念ながら、私はそれを疑います。
貼り付ける前に、単一引用符を入力して貼り付けます。control-cと上矢印で1つの巨大な行として編集します。
テキストに単一引用符が含まれているが二重引用符は含まれていない場合は、二重引用符も機能します。$
引用符で囲まれた巨大な行を1つのコマンドとして実際に実行していないので、二重引用符の中に展開されるものが含まれていても問題ありません。
改行は1つの大きな長い行を作成するのではなく、継続プロンプト(公式用語ではありません)を開始するため、実際にすべてを直接編集することはできません。
これらの4行を考えると:
echo
ls
foo
bar
私が提案するように貼り付けると、画面にこれが表示されます:
$ 'echo
> ls
> foo
> bar <or cursor here if you didn't include a trailing newline
> [cursor here]
次に、control-Cと上矢印を押します。(control-Cはカーソルと同じ行のすべてを破棄するので、そこに役立つテキストがある場合は、最初にReturnキーを押します。)
別の方法としては、見積もりを閉じてReturnキーを押し、上向き矢印を押します。
とにかく、上向き矢印の後
$ 'echo
ls
foo
bar
control-aと先頭のを削除し'
ます。control-leftとcontrol-rightを使用して、貼り付けブロックをすばやく(ワード単位で)移動します。または、端末の設定がCtrl-矢印キー、alt-b、alt-fをサポートしていない場合。
リテラルの改行は実際にはコマンドを分離し、これらの4行はコマンド履歴に別々に記録されます。;
またはに変更することをお勧めします&&
。(私はそのためのトリックを知りません、前方または後方ワードにキーリピートを使用してすばやくそこに到達し、手動でそれを行います。)
これは、貼り付けが改行で終わり、端末エミュレーターが基本的に貼り付けを1文字ずつbashに送るために発生します。このプロセスでは、bashは実際にはマシンから人間のタイピストを知りません。
私は通常、コピーと貼り付けを行うときに改行を含まないように特別な注意を払っていますが、試すことができる1つのトリックがありますC-x C-e
。貼り付ける前に、bashに入力します。$EDITOR
空のファイルで起動するはずです。そのファイルに何を保存して終了しても、bashが実行されます。そのため、コマンドをエディターに貼り付け、さらに操作して、すべてを一度に実行できます。
私は会社とは関係ありません。非常に満足しています。次のターミナルプログラムを試してください:http : //www.emtec.com/zoc/index.html。Mac版もあります。
この回答に違反した場合は、SEルールを教えてください。回答を削除します。
編集:
他の回答を正しく理解した場合、この問題は端末プログラムが原因である可能性があります。ZOCターミナルプログラムは、作業用に完全に設計されたプロフェッショナルソフトウェアです。選択したテキストを追加の文字なしで貼り付けます。セッションを別のテキストファイルに記録できます。そしてもっとたくさん
更新:
端末プログラムにはオプションがありますPaste without final 'newline'
。これが役立つかもしれません。