Atomテキストエディタが閉じたときにスクリプトが実行されるように監視したいと思います。
コマンドライン構文を使用してエディタを開きたいですatom
。エディタを閉じるときにbashスクリプトを実行したいと思います。
どうすればいいですか?
ベストアンサー1
コマンドライン構文を使用してエディタを開きたいです
atom
。エディタを閉じるときにbashスクリプトを実行したいと思います。
atom
実際に実行されwhatever
実行されるシェル関数またはスクリプトを作成します。
例関数
atom () (
command atom "$@"
/path/to/whatever
)
右側のスタートアップファイル(~/.bashrc
Bashの場合)に関数を定義します。新しいシェルを開きます。これからatom
シェルから呼び出すと、関数が実行されます。この方法はシェルの外側には影響しません。
サンプルスクリプト
(注:スクリプトで関数を使用することは意味がありません。)
#!/bin/sh
/path/to/real/atom "$@"
/path/to/whatever
スクリプトに名前を付けて実行可能にし、他のディレクトリより古いatom
ディレクトリに配置します(これらのディレクトリを作成して変更する必要があるかもしれません)。今、変数を使用してそれを見つけるすべてがスクリプトを見つけるでしょう。この方法はシェルの外部で動作します。PATH
atom
PATH
PATH
atom
ただし、Atomを通常のパス(つまりパスではなくパス)で実行しようとすると、実際のスクリプトのように実行されPATH
ます。atom
実際の値を別の場所に移動し、誰もがatom
実際の値を期待する場所にスクリプトを配置できますがatom
(/path/to/real/atom
スクリプトが独自に呼び出されないようにスクリプトで調整)、Atomを更新することは非常に難しいため、お勧めできません。スクリプトを上書きできます。
可能な改善
上記の関数または上記の
whatever
スクリプトは最後のコマンドであるため、終了状態で終了します。たぶん実際のシャットダウン状態で終了したいと思うかもしれませんatom
。これは特にスクリプトに当てはまります。この名前のスクリプトは、atom
実際のプログラムを実行したいすべてのプログラムによって呼び出され、呼び出しプロセスの一部が終了ステータスを使用して特定のタスクを実行することを除外することはできatom
ません。atom
終了状態を維持する関数は次のとおりです。
atom () ( command atom "$@" status="$?" /path/to/whatever exit "$status" )
(この関数は意図的にサブシェルで実行されるため、その
status
変数はメインシェルには影響しません。)同じスクリプト:
#!/bin/sh /path/to/real/atom "$@" status="$?" /path/to/whatever exit "$status"
関数またはスクリプトが実際に終了した後、できるだけ早く終了したい場合も、非同期的
atom
に起動したい場合もありますwhatever
。代わりに/path/to/whatever &
関数/スクリプトを実行してみてください/path/to/whatever
。
一般的な注意事項
関数またはスクリプトは
whatever
次の後に実行されます。努力するRunning realatom
。atom
Realがウィンドウを表示または開始するかどうかは問題ではありません。終了ステータスをテストすると、いくつかの例外(/path/to/real/atom
トリガされた場合はNo such file or directory
終了ステータス127
)が検出され、条件付きでこれを抑制できますwhatever
。 「アプリケーションが閉じたとき」が「ウィンドウが閉じたとき」を意味する場合、状況はそれほど単純ではありません。通常、ブラウザやテキストエディタなどのプログラムを2番目に呼び出すと、別のインスタンスがすでに実行されていることを検出し、独自のタスクを別のプロセスに委任できます。実際には、新しいタブや古いウィンドウに何かが生成されるのと同じです。ジョブが引き継がれた直後に、新しいプロセスが終了します。ジョブは以前のインスタンスの責任です。 Atomがこのタスクを実行すると、
whatever
タスク自体が完了/終了していなくても、新しいプロセスがタスクを委任して終了した直後にタスク(新しいプロセスに関連付けられている)が実行されることがわかります。私はAtomを知らず、このように動作できるかどうかわかりません。通常、プロセスは独自の実行可能ファイルまたは名前を呼び出して別のインスタンスを作成できます(おそらくウィンドウなしで自動的に)。 Atom(つまり、実際)が場所
atom
で使用されている方法でこれを実行してスクリプトを見つけた場合、予想よりも多くのインスタンスを観察できます。一部の方法は使用されません。繰り返しますが、私はAtomを知りません。これを行うのか、どのように行うのかわかりません。PATH
atom
whatever
PATH