我正在组合sox和lame来生成一个新的音乐文件,但是为了使用管道在一行中完成所有工作,似乎有必要用-字符“标记”输出和输入边界。我继承了这段代码,所以让我来展示一下。
sox $DIRNAME/$BASENAME -e signed-integer -r 8000 -c 2 -t wav - trim $POSITIONS | lame -v -V4 --resample 8 - $DIRNAME/${NOEXT}.mp3wav和trim之间的-是输出文件,--resample 8和$DIRNAME/${NOEXT}.mp3之间的-是输入文件。
我正在努力寻找有关这方面的更多信息,比如是否可以使用任何字符,或者-是否在这方面是特殊的。这叫什么,它的工作原理是什么?
发布于 2012-10-01 09:16:48
许多Unix命令行实用程序使用"-“作为缩写,表示”在这里不使用实际文件,而是使用stdin (或stdout)“。Sox是以下程序之一:
这是来自sox manpage
通过使用特殊文件名'-‘,可以在简单的管道操作中使用
SoX,如果用它代替输入文件名,将导致SoX从’标准输入‘(stdin)读取音频数据,如果用它代替输出文件名,将使SoX将音频数据发送到’标准输出‘(stdout)。请注意,当使用此选项时,还必须提供文件类型(请参阅下面的-t )。
发布于 2012-10-01 09:17:09
按照惯例,unix和它的朋友使用-来表示标准输入和标准输出。
它不是100%通用的,但它被广泛使用。
发布于 2012-10-01 09:23:09
在您的示例中,它与
/dev/stdin试着用它替换你的-,你会看到的。
https://stackoverflow.com/questions/12666501
复制相似问题