如何定义包含here-document的别名

时间:2018-05-16 15:32:15

标签: bash unix alias heredoc

我有一个命令可以按如下方式执行:

$ cmd<<EOF|gvim -

在我的.alias文件中尝试为命令设置别名:

alias cmd='cmd<<EOF|gvim -'

当我获取别名文件时,我得到:

$ . ./.alias
bash: ./.alias: line 14: unexpected EOF while looking for matching `''
bash: ./.alias: line 15: syntax error: unexpected end of file

如何定义正确的别名?感谢。

1 个答案:

答案 0 :(得分:0)

如果您的命令行以cmd<<EOF|gvim -开头,则表示您需要使用EOF终止此文档(我假设您手动输入)。相反,只需让cmd从标准输入读取,您可以使用 Control - d 终止。

即代替

$ cmd<<EOF | gvim -
> your text
> goes here
> EOF

你使用

$ cmd | gvim -
your text
goes here
^d

其中^d只是 Control - d

然后,您可以定义一个函数

mycmd () {
    cmd | gvim -
}

作为一般规则,请避免定义除了向单个命令添加选项之外的别名,例如alias ls='ls --color'