echoコマンドをatコマンドで使用できないのはなぜですか?

echoコマンドをatコマンドで使用できないのはなぜですか?

私が入力したとき:

at now + 1 min
at>play /usr/share/sounds/startrek.wav
at>ctrl+d

動作するので、1分後に実際に音が再生されます。

しかし、私が入力したとき:

at now + 1 min
at>echo "Teresa the green vegetable lover"
at>ctrl+d

シェルはエラー応答を受け取りませんが、1分後にテキストは表示されません。

ベストアンサー1

atによって実行されるコマンドは、そのコマンドが登録されている端末では実行されません。通常、これは意味がありません。端末が存在しなくなったり、他のユーザーが使用したりできます。コマンドの実行中にログアウトすることもできます。

atコマンドの出力が電子メールで送信されます。これは、一部の電子メールプログラムで設定した外部POPまたはIMAPアカウントではなく、ローカルのUnix電子メールです。ローカルEメールが設定されていないと、このコマンドの出力は失われます。ローカルメールが設定されていない場合、このガイド役に立つかもしれません。

atコマンドが端末と対話するには、明示的なリダイレクトを使用する必要があります。たとえば、

echo "echo hello >$TTY" | at now + 1 min

このコードでは、変数はTTYシェルによって拡張されるため、入力は次atのようになりますecho hello >/dev/pts/42

おすすめ記事