bash - 使用命令的结果作为 bash 中的参数?

标签 bash command-line

要为文件夹中的所有音乐创建播放列表,我在 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/

相关文章:

linux - 根据内容将巨大的哈希文件分成一个文件(shell脚本)

linux - 如何使用eval读取变量

bash - 在循环期间访问 KV 对中的值

python - Python中自定义命令行解析

linux - 如何从头开始 grep 单词

ruby-on-rails - 是否有替代的 Ctrl+C 来停止 Rails 服务器?

python - 使用 Python 从 linux 命令行读取

c# - C# 中命令行工具的包装器

mysql命令行选项

windows - 如何通过命令行更改现有文件夹的图标? ( Windows 10)