Ili*_*rim 1 bash alias command-line
在 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
Run Code Online (Sandbox Code Playgroud)
如有必要,请替换command1并command2始终使用您不太可能随机输入的单词。
trap command1 debug将导致command1每次您(用户)键入命令时执行该函数。
command2,
command1则设置command_flag.command2toPROMPT_COMMAND
将导致command2在 shell 即将发出提示时执行。
command_flag有一个非空值,则表示command1刚刚执行,这意味着用户刚刚运行了一个命令。在这种情况下,什么都不做。command_flag确实不具有非空值,这意味着用户只需点击Enter。在这种情况下,做您想做的事情(例如,清除屏幕)。command_flag为空白,这样一切都会在下一个循环中工作。注意:我很确定这是特定于 bash 的(即,POSIX 不支持)。
这个答案基本上是从我对在 bash 中的命令后添加垂直空间的答案中复制的。 对于其他方法,另请参见在 PROMPT_COMMAND 中判断最后一个命令是否为空。
| 归档时间: |
|
| 查看次数: |
633 次 |
| 最近记录: |