0

我们已经组合了一个 perl 脚本,该脚本主要查看传递给它的参数,检查是否正在创建或修改文件,然后将其保存在 mysql 数据库中,以便以后轻松访问。这是有趣的部分,我如何让这个 perl 脚本在终端中输入所有命令之前运行。我需要制作这个虚拟证明,这样人们就不会忘记运行它。

对不起,我没有正确地提出这个问题。我想要做的是添加到每个命令之前,这样每个命令都会像“./run.pl ls”一样运行。这样,如果命令是 mv 或者它创建了一个输出文件,我就可以跟踪文件更改。该脚本几乎可以解决这个问题,但我只是不知道如何将它无缝地运行给用户。

我正在使用 bash 终端运行 ubuntu 服务器。

谢谢

4

2 回答 2

4

如果我理解正确,您需要在运行每个命令之前执行一个函数preexec,类似于precmd.zsh

不幸的是bash,没有对此的本机支持,但您可以使用DEBUG陷阱来做到这一点。

是应用此方法的示例代码。

该页面还提供了一些有用的信息。

于 2012-10-03T15:07:55.000 回答
1

您可以修改该~/.bashrc文件并在那里启动您的脚本。请注意,每个用户将(并且应该)仍然拥有修改此文件的权限,可能会删除脚本调用。

/etc/bash.bashrc文件是系统范围的,只能由 root 更改。

这些.bashrcs 在创建新的 bash 实例(例如新终端)时执行。

它与Ubuntu 系统上sh的系统 shell不同。dash

于 2012-10-03T15:04:12.147 回答