Ich möchte die Ausgabedatei vom Kommandozeilen-Audio-Tool SoX in das E-Mail-Tool mutt leiten.
Was ich tun möchte, ist etwas Ähnliches:
sox /Users/someUser/Desktop/input.mp3 output.mp3 | mutt -s "someSubject" -a [output-from-sox] [email protected]
Was ich nicht weiß, ist in eckige Klammern eingeschlossen.
Ich bin ein UNIX-Neuling, daher sind alle Hinweise sehr willkommen.
sox /Users/someUser/Desktop/input.mp3 output.mp3 ; mutt -s "someSubject" -a output.mp3 [email protected]
? Sie möchten die Befehlszeilenausgabe senden ?sox
Anrufoutput.mp3
nicht einfach so, wie ich ihn vorgeschlagen habe, und löschen ihn nach dem Senden? Falls das Senden fehlschlägt oder so, haben Sie immer noch die Datei, um es erneut zu versuchen.-
, wenn Argumente für Eingabe- / Ausgabedateien berücksichtigt werden. Siehe beispielsweise das Beispiel in der Hilfeseite cat (1) .Antworten:
Eine Pipe in einem Unix-ähnlichen Betriebssystem dient dazu, ein Programm auszuführen, seine Standardausgabe (die sonst zum Bildschirm führt) als Eingabe für ein anderes Programm zu verwenden (anstelle der Standardeingabe, die normalerweise über die Tastatur erfolgt) ).
Anscheinend möchten Sie nur ein Programm in eine Datei ausgeben und dann die Datei von einem anderen Programm als Eingabe verwenden lassen . Dafür brauchst du keine Pfeife.
Um ein Programm nach dem anderen auszuführen, verwenden Sie
;
. Zum Beispiel:Unix-Kommandozeilenprogramme geben einen "Exit Status" oder "Return Code" aus. Die meisten Programme geben 0 aus, um anzuzeigen, dass sie ihre Sache erfolgreich gemacht haben, oder einen anderen Wert, wenn ein Problem aufgetreten ist. Wenn Ihr erster Befehl so lautet, verwenden Sie
&&
anstelle;
den zweiten Befehl nur dann auszuführen, wenn der erste erfolgreich war. Zum Beispiel:quelle