我想更改我的Bash配置,所以当我在命令提示符中输入内容(例如foo bar
)时,它确实会执行h foo bar
。
我想这样做是因为我经常使用hilite(别名为h
)将stderr用红色着色,我希望这种行为永久化。
我看到的其他用途是与Git交互,因为我写了很多命令,如:
git status
git add ...
git commit ...
我想我之前可以使用preexec_invoke_exec
来执行某些操作
命令正在运行,但我不知道如何更改
命令或阻止它执行。
有什么想法吗?
答案 0 :(得分:2)
您可以通过绑定return
键为您插入h
来实现此目的。您可以将此添加到.input.rc
:
Return: "\C-ah\ \n"
或将此bind
放入.bashrc
:
bind 'RETURN: "\C-ah \n"'
(感谢these guys)。
有一些捕获:很明显,这只是bash-only,这可以在某些地方给出一些非常奇怪的行为(我现在想不出一个像样的例子),所以我不会说这是'好的'以任何方式抨击。
我个人会跳过hilite
并保持纯粹bash
。因此,请尝试寻找一种方法将追加内容添加到每个命令,以便将stderr
流重定向到彩色echo
/ printf
...但这是一个偏好的问题,我猜:)
答案 1 :(得分:0)
要从你指定的命令运行一个不同的命令,你最好的选择可能是要捕获命令的bash函数。
我对“hilite”一无所知,但是如果它安装了二进制文件,比如/usr/bin/hilite
,你可以使用:
git () {
/usr/bin/hilite /usr/bin/git "$@"
}
所以...当你在bash提示符下运行git
时,bash将实际运行hilite
,使用/usr/bin/git
和其余的命令行参数作为{{{1}的参数1}}。
请注意,这应该适用于传统的Bourne shell以及bash。