メモのコツを教えてください!

linuxで全てのコマンドを投入した時にフックし、自作のスクリプトにそのコマンドを渡すような方法はないでしょうか?

A 回答 (3件)

No2です。



>その処理の内部でその時に実行されたコマンドが何かを判断し、別の処理をさらに実行するという事をしたいのです。

コマンドを実行した「後」で、今実行したコマンドが何であったのかを知るのは可能です。bashで、
PROMPT_COMMAND='history 1 | foo'
で、fooと言うプログラムで直前のコマンドを解析する。
bashの設定でヒストリに残さないこともあるので、そういうことがないように、HISTCONTROL HISTIGNORE HISTSIZE を適切に設定します。

ただしhistoryで表示されるのは、(ヒストリ置換以外の)各種置換や展開の前のコマンドラインなので、変数展開とかファイル展開などを自分で行う必要があります。
    • good
    • 0

シェルへ手動で打ち込んだコマンドが対象であれば、


・シェルを自作する
・シェルを改造する(簡単な改造ならそんなに難しくは無いと思うがこういう質問をする人には無理か)
で可能。シェル(bash/tcsh等)の設定などでは不可能。
他のプログラムから内部的に起動されるコマンドなども対象なら
・カーネルを改造する
で可能。それ以外の方補では不可能。

実際にやりたいことを書くと、他のもっと簡単な方法があるかも。

この回答への補足

シェルの設定でやはり不可能でしょうか。
例えば、zshだとprecmdなどがあったり、bashだとちょっと違うかもしれませんがPROMPT_COMMANDなどがあったりすると思います。
やりたいことは、その処理の内部でその時に実行されたコマンドが何かを判断し、別の処理をさらに実行するという事をしたいのです。

補足日時:2012/08/02 00:34
    • good
    • 0

シェルにラッパーをかけるしか思いつきません・・・



要は、適当なスクリプトをユーザが使うシェルの代わりに配置して、受けた入力を「自作のスクリプト」に渡しつつ本来のシェルで実行するということです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報