これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド hexec です。
プログラム:
NAME
hexec - プロセス実行フックツール
SYNOPSIS
ヘクセック[式] [cmd] [引数...]
DESCRIPTION
hexec は、プロセス実行呼び出し (syscall の exec ファミリ) にフックするツールです。 あなたはできる
フックされた実行呼び出しに対して実行される式を定義します。 この表現は、
置換実行呼び出しも含まれています。
OPTIONS 概要
ここでは hexec のオプションの概要を示します。
--ヘルプ | -h オプション/式の概要ページを印刷します。
--バージョン | -v XNUMX進数のバージョンを表示します
--ログアウト | -lo エラー用の出力ファイルを設定し、 -print 出力を設定します。
OPTIONS
-h オプション/式の概要ページを印刷する
- 助けて オプション/式の概要ページを印刷する
それ エラーおよび -print 出力の出力ファイルを設定します。 これは、次の場合に必要になる可能性があります
一部のプロセスは stderr から読み取るため、stderr への書き込みは誤動作を引き起こす可能性があります。
明確に定義された出力が期待されます。
表現
式はすべてのプロセス実行呼び出しに対して実行されます。 式が返された場合
true の場合、元の呼び出しはスキップされます。
-そして
-a
両方の式が true を返す場合、true を返します。 左が false を返した場合、右は
式は決して実行されません。
または
-o
両方の式のいずれかが true を返す場合、true を返します。 左辺が true を返す場合、
正しい式は決して実行されません。
-道
実行可能ファイルのパスが一致する場合は true を返します。 バッシュです
互換性のあるワイルドカードパターン。
-ipath
-path と同じですが、大文字と小文字は区別されません。
-名前
実行可能ファイルのベース名が一致する場合は true を返します。 。 です
bash と互換性のあるワイルドカード パターン。
-いなめ
-name と同じですが、大文字と小文字は区別されません。
-含む
実行可能ファイルのパスに文字列が含まれている場合は true を返します。 。
-アイコンが含まれています
-contains と同じですが、大文字と小文字は区別されません。
-印刷 呼び出されたプロセスにすべての引数を出力します。 常に true を返します。
-EXEC [引数...] ;
実行します[args...] を引数として使用します。 この式は次で終了する必要があります
セミコロン。 引数のプレースホルダーは次のように使用できます。 および [args...] (以下を参照)。
この式は常に true を返します。
注意: 終了コードをエスケープしたり引用したりする必要がある場合があることに注意してください。
シェルを混乱させないようにセミコロンを使用します。
-NS <script>
通訳します as a shell script by invoking /bin/sh 引数付き -c
' '。 内部で引数プレースホルダーを使用できます. Please note that -sh
単一の引数のみを期待し、引数の可変リスト (-exec として) を期待しません。
します)。 -sh を使用することは、使用することと同じです -EXEC sh -c <script>.
プレースホルダー FOR -EXEC 表現
すべての -exec 式では、引数リスト内のプレースホルダーを使用して情報を取得できます。
元の実行呼び出しから。 各プレースホルダーは { で始まり } で終わります。 次の場合は \{ を使用してください
引数リストで { を使用したいと考えています。 -exec を実行すると、プレースホルダーが置き換えられます。
式が評価されます。
プレースホルダーの種類:
{NS} 元の呼び出しの引数の数に置き換えられます。
{ }
インデックスの元の引数に置き換えられます。 例: {1} は次のようになります。
最初の引数。 先頭に追加できますプレースホルダーフラグ付き。
{} 元の呼び出しのすべての引数に置き換えられます。 それぞれの引数は、
スペースで区切ります。 プレースホルダー フラグを使用できます。
注意: 実行可能ファイル名も引数として考慮されます。 これは、次のような呼び出しを意味します
「echo test」の場合、引数は「echo」と「test」の XNUMX つになります。
プレースホルダ FLAGS
s すべての引数を連結するのではなく、すべての引数を単一の引数として挿入します。
引数
引数「a」、「b」、「c」について考えてみましょう。 それなし s, -EXEC {} \; 結果として
-EXEC 'a b c' \;、多くの場合、これはあなたが望むものではありません。 -EXEC {NS} \; しかししかし
結果として -EXEC 'A' 「b」 'NS' \;.
q すべての引数を引用します。
e 英数字以外の文字はすべてエスケープします。 このフラグは、「sh」を使用する場合に非常に便利です。
-exec 式の -c <...>"。
例
-EXEC echo {} \; 電話で 'A' 「b」 'NS'
結果: 'echo' 'abc'
-EXEC echo {NS} \; 電話で 'A' 「b」 'NS'
結果: 'echo' 'a' 'b' 'c'
-EXEC sh -c 'エコー {}; {}' \; 電話で 「し」 '-c' 'gcc DC >> ログ.txt」
結果: 'sh' '-c' 'echo sh -c gcc dc >> log.txt; sh -c gcc dc >> log.txt'
>> の処理が間違っているため、これは期待どおりの動作をしないことに注意してください。
この場合。
-EXEC sh -c 'エコー {e}; {}' \; 電話で 「し」 '-c' 'gcc DC >> ログ.txt」
結果: 'sh' '-c' 'echo sh \-c gcc\ d\.c\ \>\>\ log\.txt; sh -c gcc dc >>
ログ.txt」
CHANGES に プロセス
hexec は、フックされたプロセスにいくつかの環境変数を追加します。 これらは(そうでない場合もあります)
完了):
LD_PRELOAD
hexec は、プリロードされたライブラリのリストに libhexec-hook.so を追加します。
HEXEC_EXPR_SHM
内部共有メモリ オブジェクトの名前が含まれます。
HEXEC_LOG_FD
エラーおよび -print 出力のファイル記述子が含まれます。
これらの環境変数は絶対に変更しないでください。 これらを使用するときも注意してください
変数の名前と内容は将来変更される可能性があるためです。
例
ヘクセック -名前 「gcc」 -EXEC キャッシュ {NS} \; make
make を呼び出し、その後 gcc を数回呼び出します。 それぞれの実行可能ファイル名
フックされたプロセスの実行は、ファイル パターン「gcc」および「ccache {s}」に対してテストされます。
一致するものが見つかるたびに呼び出されます。 '{s}' は元のもの (
夢中になった)コール。 この例では、「gcc -o test.o test.c」への呼び出しが置き換えられます。
「ccache gcc -o test.o test.c」
HOW IT WORKS
すべて
onworks.net サービスを使用してオンラインで hexec を使用する