Problem Aliasing a Command com um pipeline e um argumento

1

Nota: eu uso o tcsh.

Estou tentando criar um alias que use o comando mutt para enviar um email com um corpo e uma linha de assunto pré-escritos, mas isso levará o argumento do alias e anexá-lo ao email. O melhor que eu tenho atualmente é:

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

Esse alias é bom, sem reclamar, mas quando tento executá-lo recebo a seguinte mensagem:

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

Quando eu removi -a \!:1 Eu não recebo mais a mensagem de erro, então acredito que o problema poderia estar focado nessa parte do alias. Os arquivos que eu disse que o emailattach para anexar são arquivos reais e anexáveis (especificamente um PDF), então esse não é o problema.

Eu também tentei o mesmo alias, mas sem as aspas simples e só recebi este erro:

[email protected]: unable to attach file.

Para ver se o pipeline era o cerne do problema, tentei o seguinte:

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

e tentei apenas executar:

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

que deu a mesma mensagem de erro que listei pela primeira vez ( can't stat ... unable to attach file. ). No entanto, quando acabei de executar:

echo "Message Body" | emailattach 

Eu recebi este erro:

Bad ! arg selector.

Que eu assumo é apenas um erro dizendo que eu esqueci de colocar o argumento necessário.

O que escrevi errado no meu apelido que faz com que não funcione?

    
por Joshua 02.07.2013 / 01:13

1 resposta

2

Tente alterar seu alias para que o anexo seja o último da sua chamada para mutt da seguinte forma:

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

Fazer isso dessa maneira funcionou para mim.

    
por 02.07.2013 / 08:32