我希望其他开发人员有一些方便的方法。因此我想给他们一个脚本,自动设置别名。
例如,该命令grunt compileModule:[modulename]
应将别名设置cprev
为该命令。设置别名后仍应执行该命令!
由于我们通常在同一个模块上工作多天,所以别名也应该在文件中有一个条目~/.bashrc
(这是主要的“功能”,因此每当他们关闭 bash 时,他们不需要在重新进入时输入整个命令)
现在有很多关于history
如何查找最后运行的命令等的帖子,但我无法找到如何对所有信息进行排序以产生我需要的结果。
我正在考虑为.创建一个别名grunt
。
就像是
alias grunt='~/myScriptForAliasHistory.sh;grunt $1';
这样合适吗?
编辑
为了更清楚地说明这一点:
原来的命令是
grunt compileModule:[name]
修改后应该是这样的。
它应该只做一个额外的步骤,所以你可以打电话相同的功能作为
cprev
以及(具有相同的参数)
工作流程可能如下所示:
- 开发人员开始开发新模块。为了编译它,他写道
grunt compileModule:[name]
。 - 同一个开发人员需要重新启动他的 bash/pc/console。现在他不想再次编写整个命令,而只想键入
cprev
(然后执行grunt compileModule:[name]
) - 第二天他开始处理模块
[anothername]
,所以他执行grunt compileModule:[anothername]
- 如果他现在重新启动,该命令
cprev
将执行grunt compileModule:[anothername]
换句话说:无论何时被调用,它都应该用它自己的当前调用参数grunt compileModule
覆盖别名。cprev
答案1
使用历史扩展 with!
将在没有别名或函数的情况下完成此操作:
$ grunt compileModule:[something]
$ # other things
$ !grunt
最后一个命令!grunt
将导致 shell 在命令行历史记录中查找以该字符串开头的最后一个命令grunt
并运行它。
在bash
:
!string
指历史列表中以 开头的当前位置之前的最新命令
string
。
如果 shell 具有持久历史记录(通常通过设置启用HISTFILE
),那么这也将在连续的 shell 会话中工作,并且根据 shell,它甚至可能在并发会话中工作。