使用管道和参数为命令别名时出现问题

使用管道和参数为命令别名时出现问题

注意:我使用 tcsh。

我正在尝试创建一个别名,该别名将使用 mutt 命令发送带有预先编写的正文和主题行的电子邮件,但这将采用别名参数并将其附加到电子邮件中。我目前拥有的最好的是:

alias emailattach 'echo "Message Body" | mutt -a \!:1 -s "Subject" [email protected]'

这个别名设置得很好,没有任何抱怨,但是当我尝试运行它时,我收到以下消息:

Can't stat [email protected]: No such file or directory
[email protected]: unable to attach file.

当我删除时,-a \!:1 我不再收到错误消息,因此我相信问题可能集中在别名的这一部分上。我告诉附加的文件emailattach是真实的、可附加的文件(特别是 PDF),所以这不是问题。

我也尝试了相同的别名,但没有单引号,我只收到此错误:

[email protected]: unable to attach file.

为了查看管道是否是问题的症结所在,我尝试了以下操作:

alias emailattach mutt -a \!:1 -s "Subject" [email protected]

然后尝试运行:

echo "Message Body" | emailattach /path/to/attachment

它给出了与我首先列出的相同的错误消息(can't stat... unable to attach file.)。然而,当我刚跑的时候:

echo "Message Body" | emailattach 

我收到这个错误:

Bad ! arg selector.

我认为这只是一个错误,表示我忘记输入所需的参数。

我在别名中写错了什么导致它不起作用?

答案1

尝试改变你的alias周围,使附件出现在你的通话中的最后,mutt如下所示:

$ alias emailattach 'echo "Message Body" | mutt -s "Subject" [email protected] -a \!:1'

这样做对我来说很有效。

相关内容