Bashシェルがコピーして貼り付けた重複テキストを「無視」できますか?

Bashシェルがコピーして貼り付けた重複テキストを「無視」できますか?

GUIテキストエディタに「Quick&Dirty」Perlスクリプトがあり、Bashを実行しているターミナルウィンドウでPerlインタプリタを起動するとします。 Perlスクリプトをコピーして端末に貼り付け、CTRL-Dを押してPerlを使用して実行できます。 Perlはスクリプトを解釈して実行します。

時にはスクリプトに誤字があり、Perlは致命的なエラーを印刷して終了しますが、コピーして貼り付けた残りのテキストは、実行しようとしているBashシェルに渡され、失敗するか(運の場合)実行されますが、他の操作を実行します。 (不幸な状況)。

例: Bash プロンプトで Perl を起動し、スクリプトの 5 行をコピーして貼り付けます。 1行と2行は問題ありませんが、3行でPerlが異常終了するため、4行と5行はBashによって実行されます。

私は単にPerlとBashを例として使用しました。他の多くの対話型ツール(Python、fdiskなど)や他のシェル(zsh、cshなど)では問題が発生する可能性があります。

テキストがコピー&ペースト入力なので、無視できることをシェルに知らせる方法はありますか?
「ユーザーが一般的に入力できるよりも早ければ無視」のようなものはありますか?
それとも、「プロセスが完了したら、次のシェル入力を読み取る前に入力バッファをフラッシュします」のようなものですか?

[[一部のツールにはこの問題はありません。たとえば、MySQL cliは誤った入力のため終了しません。 ]]

ベストアンサー1

これは答えではありませんが、おそらく許容される解決策かもしれません。

alias p='perl; echo hit control-d again; cat > /dev/null'

その後、Perlスクリプトが早期に終了すると、残りの内容は/ dev / nullに安全に貼り付けられます。 Perlスクリプトが成功すると、おなじみの通知が表示され、Ctrl-dを押してキャッチャーを終了しますcat

おすすめ記事