uuencode text.txt | mail -s "hai" "abc@gmail.com" < body.txt
после выполнения этой команды терминал пуст. Это не подсказка для следующей команды. Я должен нажать Ctrl + Z, чтобы вернуться в терминал.
В чем может быть проблема?
Ну, ты так не делаешь ;-) Хорошая попытка, хотя!
Вы используете трубу "|" записать вывод вашей команды uuencode в канал ввода (он же стандартный ввод) стандартного ввода команды mail. Вы также используете перенаправление оболочки "<" записать содержимое файла body.txt в канал ввода вашей почтовой команды.
Это неоднозначно. Я не уверен прямо сейчас, что имеет приоритет, или как оболочка справляется с ситуацией. Вы, вероятно, в конечном итоге с одной из программ, запрашивающих ввод.
Лучше уточнить для оболочки, что делать, в каком порядке. То есть записав:
(cat body.txt; uuencode text.txt) |mail -s "hai" "abc@gmail.com"
Это выполняет cat (файловый принтер) и uuencode в один прием (точнее в подоболочке из-за круглых скобок) и передает общий вывод в почтовую программу