要为文件夹中的所有音乐创建播放列表,我在 bash 中使用以下命令:
ls > list.txt
我想使用 pwd
命令的结果作为播放列表的名称。
类似于:
ls > ${pwd}.txt
虽然这不起作用 - 谁能告诉我需要使用什么语法来做这样的事情?
编辑:如评论中所述,pwd 最终会给出一个绝对路径,因此我的播放列表最终会在某个目录中被命名为 .txt - d'oh!所以我必须修剪路径。感谢您发现这一点 - 我可能会花很长时间想知道我的文件去了哪里!
最佳答案
最好的方法是使用 "$(command substitution)"
(谢谢,Landon):
ls > "$(pwd).txt"
有时您还会看到人们使用旧的反引号表示法,但这有 several drawbacks在嵌套和转义方面:
ls > "`pwd`.txt"
注意pwd
的未处理替换是一个绝对路径,所以上面的命令在与工作目录相同的目录下创建了一个同名文件,但带有.txt
扩展名。 Thomas Kammeyer 指出 basename
命令去除了前导目录,因此这将在当前目录中创建一个具有该目录名称的文本文件:
ls > "$(basename "$(pwd)").txt"
也感谢erichui 提出路径中空格的问题。
关于bash - 使用命令的结果作为 bash 中的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207/