如何在命令执行时设置别名?

如何在命令执行时设置别名?

我希望其他开发人员有一些方便的方法。因此我想给他们一个脚本,自动设置别名。

例如,该命令grunt compileModule:[modulename]应将别名设置cprev为该命令。设置别名后仍应执行该命令!

由于我们通常在同一个模块上工作多天,所以别名也应该在文件中有一个条目~/.bashrc(这是主要的“功能”,因此每当他们关闭 bash 时,他们不需要在重新进入时输入整个命令)

现在有很多关于history如何查找最后运行的命令等的帖子,但我无法找到如何对所有信息进行排序以产生我需要的结果。

我正在考虑为.创建一个别名grunt

就像是

alias grunt='~/myScriptForAliasHistory.sh;grunt $1';

这样合适吗?

编辑

为了更清楚地说明这一点:

原来的命令是

grunt compileModule:[name]

修改后应该是这样的。

它应该只做一个额外的步骤,所以你可以打电话相同的功能作为

cprev

以及(具有相同的参数)

工作流程可能如下所示:

  1. 开发人员开始开发新模块。为了编译它,他写道grunt compileModule:[name]
  2. 同一个开发人员需要重新启动他的 bash/pc/console。现在他不想再次编写整个命令,而只想键入cprev(然后执行grunt compileModule:[name]
  3. 第二天他开始处理模块[anothername],所以他执行grunt compileModule:[anothername]
  4. 如果他现在重新启动,该命令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,它甚至可能在并发会话中工作。

相关内容