如何在Bash中获取无前导斜杠的pwd相对路径
解决方法
给你几个适合Bash新手的简单实现方式:
方法1:用sed一步处理输出
直接把pwd的结果传给sed,同时完成去掉前导斜杠和替换正斜杠为反斜杠的操作:
echo "pwd : $(pwd | sed 's/^\///; s/\//\\/g')"
解释:
s/^\///:匹配路径开头的/,将其替换为空,去掉前导斜杠s/\//\\/g:把路径里所有剩余的/替换成\(\在sed中是转义字符,所以需要写两个)
方法2:纯Bash参数展开(无需外部工具)
利用Bash自带的变量字符串处理功能,效率更高:
echo "pwd : ${PWD#/}" | tr '/' '\\'
或者更彻底的纯Bash写法:
echo "pwd : ${${PWD#/}//\//\\}"
解释:
${PWD#/}:直接调用Bash环境变量PWD(和pwd命令输出一致),去掉其开头的第一个/tr '/' '\\':把所有/转换成\;第二种写法里的//\//\\则是用Bash参数展开完成斜杠替换
方法3:分步处理(新手友好,易理解)
把操作拆成步骤,更直观:
# 获取当前完整路径并存储 full_path=$(pwd) # 去掉路径开头的斜杠 no_leading_slash=${full_path#/} # 把正斜杠替换为反斜杠 final_path=$(echo "$no_leading_slash" | tr '/' '\\') # 输出最终结果 echo "pwd : $final_path"
内容的提问来源于stack exchange,提问作者Ahmad Gamal
相关产品推荐
相关产品推荐

