xdotoolのキルスイッチを作成するには?

xdotoolのキルスイッチを作成するには?

xdotool私はいくつかの作業を自動化しました。スプレッドシートからデータをインポートし、すべてのデータを手動でコピーして貼り付ける必要なしにWebサイトに「入力」することで、数百時間の作業時間を節約できます。これは単純なwhileループを介して実行され、awkスプレッドシートから取得したデータを使用します。

問題は、時々新しいxdotoolBashスクリプトをテストするときや、ランダムな状況でxdotool物事に大きな混乱を引き起こし始め、停止するのが難しいことです。ターミナルウィンドウに戻り、CTRL + Cをすばやく押す必要がありますが、間違って実行される可能性がある潜在的に危険なコードをターミナルに入力するなど、破壊的なタスクを実行できます。実際に私が経験する最悪の問題は、それがしっかり止められ、物事のコントロールを再び得ることができないということです。

たとえば、キーボードで特定のキーの組み合わせを押すと、すぐに実行を停止するように指示する一種の「キースイッチ」をBashスクリプトに統合する方法はありますか?

答え1

選択したウィンドウマネージャで、次のコマンドを呼び出すショートカットを作成します。

pkill -f xdotool

xdotoolこれにより、コマンドラインからすべてのプロセスが終了します。これは、ほとんどのユースケースで十分に正確なキルスイッチである必要があります。

次に、潜在的に危険なスクリプトを実行したいときはいつでも、他のシェルインスタンスで次のことを行います。

bash -c 'while true; do xdotool ...; done'

これにより、スクリプトが制御不能になるたびにショートカットを使用してスクリプトを終了できます。

答え2

まず、実験スクリプトを実行するときに本番データを変更することを許可しないでください。実際の損傷を避けるために、スクリプトにテストデータ/ URLを指定してください。

次に、特定のファイルが存在しない場合にのみ実行されるように、xdotoolへの呼び出しをifステートメントでラップできます。 xdotoolのすべてのインスタンスを停止するには、このファイルを作成するだけです。これはPerlで書かれた例で、好みのスクリプト言語に簡単に翻訳できます。

runtool.pl

#!/usr/bin/perl
use strict;
 
my $stop_file = "/tmp/dont-run-xdotool.txt";
if  (! -e $stop_file) { # run xdotool here }
exit 0;

関連情報