2

我想改变我的 Bash 配置,所以当我foo bar在命令提示符下输入一些东西(例如)时,它真的会执行h foo bar.

我想这样做是因为我经常使用hilite(别名为h)将 stderr 着色为红色,并且我想让这种行为永久化。

我看到的其他用途是与 Git 交互,因为我编写了很多命令,例如:

git status
git add ...
git commit ...

我想我可以preexec_invoke_exec在命令运行之前执行某些操作,但我不知道如何更改命令或阻止它执行。

有任何想法吗?

4

2 回答 2

2

您可以通过绑定returnh为您插入来实现这一点。您可以通过将其添加到您的.input.rc

Return: "\C-ah\ \n"

或者把它bind放在你的.bashrc

bind 'RETURN: "\C-ah \n"'   

(向这些人致敬)。

有一些问题:显然,它只是 bash,这可能会在某些地方产生一些非常奇怪的行为(我现在想不出一个像样的例子),所以我不会说这是“好”的抨击反正。

我个人会跳过hilite并保持纯洁bash。因此,相反,尝试寻找一种方法来为每个命令附加一些东西,以便将stderr流重定向到彩色echo/ printf...但我猜这是一个偏好问题:)

于 2012-07-11T16:01:44.097 回答
0

要运行与您指定的命令不同的命令,最好的办法可能是为要捕获的命令创建一个 bash 函数。

我对“hilite”一无所知,但如果它安装了一个二进制文件,比如说/usr/bin/hilite,你可以使用:

git () {
  /usr/bin/hilite /usr/bin/git "$@"
}

所以......当您git在 bash 提示符下运行时,bash 将实际运行hilite,使用/usr/bin/git和其余命令行参数作为h.

请注意,这应该适用于传统的 Bourne shell 和 bash。

于 2012-07-11T15:27:03.900 回答