Git Bash中Bash别名生成带时间戳日志文件时时间戳固定问题求助
解决Git Bash中Alias时间戳固定不变的问题
这个问题我之前也碰到过,核心原因是bash解析别名的时机问题——你现在用双引号定义的别名里,$(date +...)在你添加别名的那一刻就被执行并替换成当时的时间戳了,而不是每次调用logfile的时候才生成新的时间。
两种可行的修复方案:
方案1:用单引号包裹整个别名命令
单引号会阻止bash在定义别名时解析内部的命令,让date在每次调用logfile时才执行:
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log'
方案2:转义双引号内的$符号
如果坚持要用双引号,需要把$(date)里的$转义成\$,避免bash提前解析:
alias logfile="adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/\$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log"
让修改生效的方法:
修改完~/.bash_aliases后,你有两种方式让新别名生效:
- 直接关闭当前Git Bash窗口,重新打开一个新窗口;
- 在当前窗口执行以下命令,手动加载更新后的别名配置:
source ~/.bash_aliases
验证修复效果:
- 第一次调用
logfile,等待几秒后按Ctrl+C停止; - 过几分钟再调用一次
logfile,同样停止; - 查看
/c/Users/username/Desktop/adb-logs/文件夹里的日志文件,两个文件的时间戳应该是不同的,对应你两次执行命令的时间。
内容的提问来源于stack exchange,提问作者Gordon H
相关产品推荐
相关产品推荐

