如何设置别名,函数或变量作为“2>& 1 | tee build.log”的快捷方式?

时间:2012-07-25 18:24:13

标签: bash shell

正如主题所说,我想更快地输入“2>& 1 | tee build.log”

或者甚至更好,我想要一个扩展到2>& 1 |的快捷方式tee $ 1. $ 2.log“其中$ 1和$ 2取自当前行。

我尝试了一些不同的东西,这是我发现的问题

  1. 别名似乎只适用于第一个单词(或第一个单词后面的别名)。所以我很确定他们无能为力。
  2. 一个功能可以工作 - 例如“log ant compile”,但是当它将第一个arg移动到第二个arg时,它具有打破标签扩展的不良副作用,等等。
  3. 变量可以分类工作,例如LOG ='2>& 1 | tee build.log',除了必须使用esc-ctrl-E手动扩展或2>& 1作为参数传递。
  4. 有人知道更好的方法吗?

    Thanks-     卡特

1 个答案:

答案 0 :(得分:3)

我可以建议第4个选项,一个readline宏吗?

将以下内容添加到~/.inputrc文件中(必要时创建):

"\C-x\C-l": " 2>&1 | tee build.log"

新shell将自动处理此文件;您可以按Control-x Control-r尝试重新读取当前shell中的文件(如果默认配置,我会忘记)。

现在,只要按Control-x Control-l,文本“2>& 1 | tee build.log”就会插入光标处。

更新:

"\C-x\C-l": "\eb\eb2>&1 | tee \ef\C-d.\ef"

允许您输入

build log

然后是Control-x Control-l将其转换为

2>&1 | tee build.log