我创建了一个 bash 命令,用于将文件夹中的每个 .mp3 文件传递给命令行媒体播放器 omxplayer。它还设置播放器的音量并丢弃来自播放器的反馈:
for i in *.mp3; do omxplayer --vol -2000 "$i" > /dev/null; done
设置--vol -2000
音量。
此命令运行良好,因此我决定为其创建一个名为 omxall 的别名:
alias omxall="for i in *.mp3; do omxplayer --vol -2000 > /dev/null "$i"; done"
实际命令是相同的,但工作方式不同。第一个命令正确播放所有 .mp3 文件,第二个命令停留几秒钟后结束。
请注意:我正在将我的别名放入~/.bash_aliases
。我在同一个文件中还有其他工作别名,因此它们的位置不是问题。
现在我意识到/dev/null/
通过抑制所有其他有用的信息会妨碍故障排除,因此我尝试不使用这些信息:
for i in *.mp3; do omxplayer --vol -2000 "$i"; done
这起到了正确的作用。
alias omxall="for i in *.mp3; do omxplayer --vol -2000 "$i"; done"
这将打开播放器的使用页面。
这是怎么回事?我是否错误地认为别名的行为应与命令提示符下输入的命令完全相同?