8

コマンドは、Enterキーを押すことなく実行されます。これは時々危険かもしれません...

それはなぜですか、どうすればそれを防ぐことができますか?

4

3 に答える 3

12

改行文字を一緒に貼り付けるからです。たとえば、一度に多くのコマンド (長い複数行のスクリプト) をコピー/貼り付けできるなど、便利な場合があります。

ええと、この特定の動作を防ぐことは私には思いつきませんでした。それは正常であり、期待されています。WYPIWYG - 貼り付けたものが得られます。

于 2009-05-13T09:47:22.480 に答える
10

1 つまたは複数の改行文字を貼り付けています。単に改行文字をコピーして貼り付けない以外に、これを回避するためにできることがいくつかあります。

  • 1 行のコマンドの場合は、最初に「#」を入力すると、コマンドがコメント アウトされます。その後、戻って編集することができます。

  • bash の (一見あまり知られていない) edit-and-execute-command機能を使用します。CTRL-x CTRL-eemacs キーバインド (デフォルト)ESC vを使用する場合、または vi キーバインドを使用する場合は、これを呼び出すことができます。これにより、現在のコマンドラインを含むテキスト エディターが呼び出されます。その後、エディターに貼り付けて、コマンドを編集できます。保存して終了すると、エディターによって保存されたコマンドが実行されます (中止する場合は、すべての行をコメントアウトするか、バッファーを完全にクリアします)。FCEDITまたはEDITOR環境変数を使用して、使用するエディターを設定できます。

于 2009-05-13T23:24:38.807 に答える
3

実行を防ぐ簡単な方法は、コメント文字 # を入力してから、コマンドを貼り付けることです。

コピーするときに指を太くして余分な文字をつかむので、私はよくそうします。

コメント文字の後に貼り付けると、コマンドは履歴バッファーにあり、編集、コメント解除、および実行できます。

--- コメントに返信

そうです、これは単一行のコマンドでのみ機能します。クリップボードに複数行がある場合は、クリップボードのデータを sed 経由でパイプできます。

愚かな bash トリック # 400 万と 1:

prompt:$ xclip -o -selection clipboard | sed --regexp-extended 's/^(.*)$/# \1;/'

これをオンにします:

for i in *.JPG;

do echo mv $i ${i/.JPG/.jpg};

done;

これに:

# for i in *.JPG;

# do echo mv $i ${i/.JPG/.jpg};

# done;

これは本当に努力する価値はありませんが、ちょっと楽しいです;>

于 2009-05-13T10:44:51.810 に答える