パイプとパラメータを使用してコマンドにエイリアスを割り当てるときに発生する問題

パイプとパラメータを使用してコマンドにエイリアスを割り当てるときに発生する問題

注:私はtcshを使います。

muttコマンドを使用して、事前に作成された本文と件名行を含むEメールを送信するエイリアスを作成しようとします。これにより、エイリアスパラメータを取得してEメールに追加します。現在私が持っている最高は次のとおりです。

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'

これは私にとってうまくいきます。

関連情報