在bash中,您可以将空命令作为别名吗?换句话说,是否认识到用户仅Enter在shell提示符下按下了键?例如,如果您想用空白的shell条目清除屏幕,如何将别名Enter作为clear
命令?
这是(有效地)将空命令命名为某些东西的方法:
将以下内容放入您的.bashrc
:
command1()
{
if [ "$BASH_COMMAND" != command2 ]
then
command_flag=1
fi
return 0
}
trap command1 debug
command2()
{
if [ ! "$command_flag" ]
then
echo "clear" # Put whatever command(s) you want here.
fi
command_flag=
}
PROMPT_COMMAND=command2
如有必要,用您不太可能随机输入的单词替换command1
并command2
一致。
trap command1 debug
会导致command1
您(用户)每次键入命令时都执行该功能。
command2
,command1
将置位command_flag
。command2
给PROMPT_COMMAND
就会导致command2
执行。
command_flag
具有非空白值,则表示command1
已执行,这意味着用户仅运行了命令。在这种情况下,什么也不做。command_flag
确实不具有非空值,这意味着用户只需点击Enter。在这种情况下,请执行您想做的事情(例如,清除屏幕)。command_flag
都将其设置为空白,因此所有内容都将在下一个周期工作。注意:我很确定这是特定于bash的(即POSIX不支持)。
这个答案基本上是从我在bash中的命令后添加垂直空间的答案中复制的。另请参见在PROMPT_COMMAND中告诉最后一个命令是否为空以了解其他方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句