Канал в Unix-подобной операционной системе предназначен для запуска одной программы, получения ее стандартного вывода (который в противном случае пошел бы на экран) и использования его в качестве входных данных для другой программы (вместо стандартного ввода, который обычно поступает с клавиатуры). ).
Похоже, что вы хотите сделать, чтобы одна программа выводила файл, а затем другая программа использовала этот файл в качестве входных данных. Тебе не нужна труба для этого.
Чтобы запустить одну программу за другой, завершить все в одной командной строке, используйте ;
, Например:
sox /Users/someUser/Desktop/input.mp3 output.mp3 ; mutt -s "someSubject" -a output.mp3 some@recipient.com
Программы командной строки Unix выводят "состояние выхода" или "код возврата". Большинство программ выводят 0, чтобы указать, что они сделали свое дело успешно, или какое-то другое значение, если возникла проблема. Если ваша первая команда такая, используйте &&
вместо ;
запустить вторую команду, только если первая была успешной. Например:
sox /Users/someUser/Desktop/input.mp3 output.mp3 && mutt -s "someSubject" -a output.mp3 some@recipient.com