如何在执行前修改每个bash命令?

时间:2013-04-06 09:40:41

标签: bash shell

有没有办法用脚本/钩子修改在bash提示符下输入的每个命令?

在我的理想世界中,脚本会在用户输入命令后触发,但在按下Enter键之前。它会将命令字符串作为参数,修改它并将其交给bash执行(所以一切都会透明地发生)。

我会使用这个钩子进行某些公司特定的替换,这些替换无法使用别名来完成,但最重要的是我感兴趣的是否可以这样做。

我知道有些黑客在执行完后会使用最后一个命令(trap 'function' DEBUG之类的东西)执行某些操作,因为有很多关于该方案的问题,但这里没有任何帮助。

谢谢和亲切的问候!

1 个答案:

答案 0 :(得分:2)

你想要的是一种命令完成 - 在我看来。

bash行编辑背后有很多东西:可绑定的readline命令,或命令完成和命令替换。

首先你可以编写自己的bash内置函数编写和编译: http://www.drdobbs.com/shell-corner-bash-dynamically-loadable-b/199102950

接下来,您可以通过人们调用编辑行或readline来改变bash: 从这里开始吧: http://www.math.utah.edu/docs/info/features_7.html

http://www.gnu.org/software/bash/manual/html_node/Command-Line-Editing.html