Linux 包含反引号的管道数据
Linux piping data containing backticks
我正在将一个命令的输出传输到第二个命令:
mpc listall | mpc add
mpc listall returns以下数据(可输出1行或多行):
Dare - 16 - I´ll Be Your King.mp3
当我将它传送到下一个命令时,我的 shell(BusyBox 上的 Ash)似乎将 ´ 转换为星号,因为我得到了错误
error adding Dare - 16 - I*ll Be Your King.mp3: No such directory
手动添加双引号有效!像这样:
mpc add "Dare - 16 - I´ll Be Your King.mp3"
所以,我尝试通过 sed 和 awk 添加它们,但在那些情况下,反引号再次转换为星号:
mpc listall | sed 's/^/"/;s/$/"/'
returns:
"Dare - 16 - I*ll Be Your King.mp3"
所以,问题是,有没有办法将反引号或实际上任何字符原样传递到另一个命令而不进行转换?
顺便说一下,显然,首先在文件名中包含这个字符是非常糟糕的,但我希望我的代码健壮并且能够处理任何抛给它的东西。
不是问题的直接解决方案,而是在 python 中使用 python-mpd2 库的解决方法(实际上更好,因为它使用 API):
myMpdClient = MPDClient()
myMpdClient.connect("localhost", 6600) # connect to localhost:6600
myMpdClient.findadd('base','directory-name')
myMpdClient.close()
如果有人发布了可行的解决方案,我将接受实际提出的问题的可行解决方案,而不是这个。
我正在将一个命令的输出传输到第二个命令:
mpc listall | mpc add
mpc listall returns以下数据(可输出1行或多行):
Dare - 16 - I´ll Be Your King.mp3
当我将它传送到下一个命令时,我的 shell(BusyBox 上的 Ash)似乎将 ´ 转换为星号,因为我得到了错误
error adding Dare - 16 - I*ll Be Your King.mp3: No such directory
手动添加双引号有效!像这样:
mpc add "Dare - 16 - I´ll Be Your King.mp3"
所以,我尝试通过 sed 和 awk 添加它们,但在那些情况下,反引号再次转换为星号:
mpc listall | sed 's/^/"/;s/$/"/'
returns:
"Dare - 16 - I*ll Be Your King.mp3"
所以,问题是,有没有办法将反引号或实际上任何字符原样传递到另一个命令而不进行转换?
顺便说一下,显然,首先在文件名中包含这个字符是非常糟糕的,但我希望我的代码健壮并且能够处理任何抛给它的东西。
不是问题的直接解决方案,而是在 python 中使用 python-mpd2 库的解决方法(实际上更好,因为它使用 API):
myMpdClient = MPDClient()
myMpdClient.connect("localhost", 6600) # connect to localhost:6600
myMpdClient.findadd('base','directory-name')
myMpdClient.close()
如果有人发布了可行的解决方案,我将接受实际提出的问题的可行解决方案,而不是这个。