You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将pwd与basename拼接并将路径和文件名赋值给变量?

拼接当前路径与文件名并赋值给变量的几种方法

嘿,这问题我熟!在Shell环境(不管是终端直接输入还是写脚本)里实现这个需求有好几种实用的方式,我给你拆解一下:

方法1:直接用命令替换拼接(最通用)

如果是要把当前工作目录和某个指定文件名拼接成完整绝对路径,直接用pwd和basename的输出组合就行,记得用双引号包裹避免空格/特殊字符坑:

# 示例:拼接当前目录下的file.txt
full_path="$(pwd)/$(basename "file.txt")"

# 如果是要获取当前运行脚本自身的完整路径,用$0代替文件名
full_path="$(pwd)/$(basename "$0")"

解释一下:$(pwd)会输出当前所在目录的绝对路径,$(basename "文件名")会提取纯文件名部分,两者用/拼接后赋值给full_path变量。

方法2:用realpath/readlink一键搞定(更省心)

如果你的系统支持realpath或者readlink命令(大部分主流Linux发行版默认都有),可以直接一步获取文件的完整绝对路径,连拼接都省了:

# 获取指定文件的完整路径
full_path=$(realpath "file.txt")

# 获取当前脚本自身的完整路径(包括处理软链接的真实路径)
full_path=$(readlink -f "$0")

这个方法的好处是自动处理相对路径、软链接等场景,不用手动拼接,非常省事。

方法3:结合参数扩展处理已有路径

如果你已经有一个文件的相对/绝对路径(比如./docs/report.pdf),可以先拆分目录和文件名再拼接:

file_path="./docs/report.pdf"
# 提取目录部分
dir_name=$(dirname "$file_path")
# 提取文件名部分
file_name=$(basename "$file_path")
# 拼接成完整路径(如果dir_name是相对路径,可结合pwd转绝对路径)
full_path="$(pwd)/${file_name}"

重要注意事项

  • 所有涉及文件名/路径的地方一定要加双引号!不然遇到文件名含空格、*、?这类特殊字符时,Shell会把它们当成分隔符或者通配符,导致结果出错。
  • 如果是在脚本里使用,优先考虑realpath/readlink,能避免很多路径相关的坑。

内容的提问来源于stack exchange,提问作者Omar BISTAMI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:19:38