拦截Shell命令

时间:2013-02-22 17:13:55

标签: java linux shell

我想知道一种能够拦截shell命令的方法

当我运行命令来编译像

这样的java程序时
javac xxx.java

我希望shell执行一组程序,在编译之前通过运行一组其他命令来检测xxx.java文件。

./instrument xxx.java

只有在那之后才能调用JVM进行编译。 是否有可能拦截shell中的命令,如果没有,我怎么能在没有系统用户知道他的代码被装备的情况下实现呢???

2 个答案:

答案 0 :(得分:3)

听起来你想要一个构建工具。 Maven是一个很好的选择,并且还有其他各种很好的选择(antgradle,制作等等。构建工具允许您将一系列复杂的操作联系在一起,以生成最终的工件,而无需每次都指定这些步骤。

答案 1 :(得分:0)

取决于您的问题的解释。听起来像你试图偷偷摸摸,而不是使用maven构建,所以就这样了。

您想要的是截取并运行相同名称的程序版本。基本上你需要创建一个名为

的可执行文件
  

的javac

它接受与真正的javac相同的EXACT参数。然后在您的程序中,您可以在文件上运行您需要的任何检测作为参数。最后,您可以通过在JAVA_HOME中执行查找或任何环境变量保存原始Java bin目录的路径来调用真正的javac。

为了使您的javac版本具有优先权,您需要将其添加到PATH环境变量的HEAD中。这将确保首先检查程序名称。在linux中,通过这个

来做
PATH=/usr/myPrograms/java/bin:$PATH

注意:如果用户明确键入javac的绝对完整路径

,则此解决方案将不起作用