Using the result of a command as an argument in bash?要为文件夹中的所有音乐创建播放列表,我在bash中使用以下命令:
我想将pwd(打印工作目录)命令的结果用作播放列表的名称。 就像是:
但这行不通-有人可以告诉我执行此类操作需要使用什么语法吗? 编辑:如评论中所述,pwd将最终给出绝对路径,因此我的播放列表最终将在某个目录中被命名为.txt-d'哦! 因此,我必须修剪路径。 感谢您发现-我可能花了很长时间才想知道我的文件在哪里!
最好的方法是使用
有时您还会看到人们使用较旧的反引号表示法,但这在嵌套和转义方面有一些缺点:
请注意,
也感谢erichui提出了路径中的空间问题。 这等效于反引号解决方案:
按照字面意思做,您可以尝试:
它将使用完整的路径名,应该没问题。 这就是你想要的吗?
如果您希望目录包含以它命名的文件,您将得到 现在,而不是使用pwd命令...为什么不使用PWD环境变量? 例如:
要么
您可能想在第二个示例中记住的内容。 如果您在/ home / hoboben中,并且想创建/home/hoboben/hoboben.txt,请尝试:
如果执行此操作,文件将包含其自己的名称,因此通常,您可以通过以下几种方法之一对此进行补救。只要不使用-a标志(然后可以选择重命名结果文件),就可以重定向到其他位置并以点开头移动该文件或命名该文件,以使其对ls命令隐藏。 我编写了自己的脚本来管理音乐文件的目录层次结构,并使用了名为" .info"的子目录来将曲目数据包含在一些备用文件中(基本上,我是通过这种方式"隐藏"元数据)。可以,因为我的需求很简单,而且我的收藏很小。 我怀疑问题可能是目录名称之一中存在空格。例如,如果您的工作目录是" / home / user / music / artist name"。 Bash会以为您尝试重定向到/ home / user / music / artist和name.txt会感到困惑。您可以使用双引号解决此问题
另外,您可能不想重定向到$(pwd).txt。在上面的示例中,您将把输出重定向到文件" / home / user / music / artist name.txt" 语法为:
那是"?"下方的"`"字符,而不是常规的单引号。 使用以上方法将在当前目录上一级创建文件。如果要将播放列表全部都转到一个目录,则需要执行以下操作:
除去目录名称以外的所有内容
这可能不是您想要的,因为那样您就不知道文件在哪里(除非您更改ls命令) 用" _"替换" /"
但是播放列表看起来很难看,甚至可能不适合选择窗口 因此,这将为您提供一个简短的可读名称和文件内的可用路径
|