web-dev-qa-db-ja.com

ショートカットキーでスクリプトを切り替えることはできますか?

デスクトップにscript.shというbashスクリプトがあります。

現在、実行したい場合はターミナルを開いて./script.shと入力し、停止したい場合は押す必要があります Ctrl + C

私がやりたいのは、スクリプトをキーにバインドすることです。 7 たとえば、スクリプトがオフの場合、押します 7、オンになります。既にオンになっている場合は、 7、オフになっています。

キーボードショートカットでバインドして有効にする方法は既に知っていますが、問題は、ショートカットをもう一度押すとスクリプトの別のインスタンスが作成されるだけで、それが望んでいないことです。

3
Xanimede

スクリプトが実行可能であると仮定すると、以下の小さなスクリプトでスクリプトを簡単に切り替えることができます。

#!/bin/bash

scriptpath='/full/path/to/script'

if ! pgrep -f "$scriptpath"
then
    Nohup "$scriptpath" &
else
    pkill -f "$scriptpath"
fi

使用するには

  1. コードを空のファイルにコピーし、toggle_scrip.shとして安全にします
  2. scriptpath='/full/path/to/script'行に、スクリプトへのフルパス(一重引用符の間)を入力します。
  3. 実行可能にし、ショートカットから実行します。

複数のスクリプトを制御する必要がある場合は、パスを上記のスニペットへの引数にします。

4
Jacob Vlijm

キーバインディングを介してこのように何かを切り替えることは可能だとは思いません。

ただし、1つのオプション(ちょっとしたハックですが、動作します)は、スクリプトを変更して、実行中の自身の別のインスタンスを検出できるようにすることです。そうすれば、キーバインドを介して2番目のスクリプトを開始するときに、pkillまたは同様のコマンドを発行して、スクリプトの2番目と1番目のインスタンスを終了できます。

1