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

Bash脚本如何以全工作目录路径作为输出日志文件名

Bash脚本实现路径斜杠替换的日志命名方法

核心实现逻辑

你只需要先获取当前工作目录的绝对路径,删除开头的根路径斜杠/后,将剩余所有/替换为下划线_,最后拼接.out后缀即可。

方法1:Bash内置参数扩展(推荐,无外部依赖)

直接用Bash原生的变量操作实现,性能最高,无需调用外部命令:

# 第一步:删除当前工作路径开头的/
log_name="${PWD#/}"
# 第二步:将所有剩余的/替换为_,拼接.out后缀
log_name="${log_name//\//_}.out"

示例效果:当前路径为/home/usr/dev时,最终生成的文件名为home_usr_dev.out,完全符合你的需求。

方法2:通用命令实现(兼容旧版Shell)

如果你的脚本需要兼容不支持高级参数扩展的旧Shell环境,可以用sed+tr组合实现:

log_name="$(pwd | sed 's/^\///' | tr '/' '_').out"

脚本使用示例

你可以直接在你的业务脚本开头加入上述命名逻辑,后续输出直接写入该文件即可:

#!/bin/bash
# 生成日志文件名
log_name="${PWD#/}"
log_name="${log_name//\//_}.out"

# 后续所有脚本输出都写入该日志文件(包括标准输出和错误输出)
exec > "$log_name" 2>&1

# 你的业务逻辑
echo "脚本启动,当前工作目录:$PWD"
# 其他命令...

效果验证

你可以先在终端执行以下命令,直接预览生成的文件名是否符合预期:

test_name="${PWD#/}"; echo "${test_name//\//_}.out"

内容的提问来源于stack exchange,提问作者D Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:06:04