xdotool
私はいくつかの作業を自動化しました。スプレッドシートからデータをインポートし、すべてのデータを手動でコピーして貼り付ける必要なしにWebサイトに「入力」することで、数百時間の作業時間を節約できます。これは単純なwhileループを介して実行され、awk
スプレッドシートから取得したデータを使用します。
問題は、時々新しいxdotool
Bashスクリプトをテストするときや、ランダムな状況で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;