Файл вывода в инструмент UNIX

Я хочу передать выходной файл из командной строки аудио инструмента SoX в почтовый инструмент Mutt.

Что я хочу сделать, это что-то похожее на это:

sox /Users/someUser/Desktop/input.mp3 output.mp3 | mutt -s "someSubject" -a [output-from-sox] some@recipient.com

То, что я не знаю, как сделать, заключено в квадратные скобки.

Я новичок в UNIX, поэтому любые советы будут высоко оценены.

1 ответ

Решение

Канал в 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
Другие вопросы по тегам