Bash别名在文件名中创建当前时间戳
首先,我在这里读了这篇文章: 然而,当我运行它时,我总是得到相同的时间戳。这对我来说毫无意义 我正在Windows10上运行GitBash(来自Git2.16.2)。我已将以下行添加到我的~/.bash_别名中:Bash别名在文件名中创建当前时间戳,bash,git,date,adb,Bash,Git,Date,Adb,首先,我在这里读了这篇文章: 然而,当我运行它时,我总是得到相同的时间戳。这对我来说毫无意义 我正在Windows10上运行GitBash(来自Git2.16.2)。我已将以下行添加到我的~/.bash_别名中: alias logfile=“adb logcat-v threadtime*:v|tee/c/Users/username/Desktop/adb logs/”$(日期+%Y-%m-%d@%Hh%Mm%Ss)-“FullLogCat.log” 这似乎创建了一个日志文件,并在屏幕上显
alias logfile=“adb logcat-v threadtime*:v|tee/c/Users/username/Desktop/adb logs/”$(日期+%Y-%m-%d@%Hh%Mm%Ss)-“FullLogCat.log”
这似乎创建了一个日志文件,并在屏幕上显示ADB日志,如我所愿。然而,实际日期似乎在终端加载的同时被“卡住”。例如,我在下午2:29:09pm加载终端,然后等到下午2:30:00pm调用别名,该文件将被标记为“2018-04”-24@14h29m09s-FullLogCat.log”。似乎当概要文件将别名加载到内存中时,它会执行date函数
有没有办法防止这种情况?这只是一个奇怪的git bash事件吗
更新:解决方案
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/ghannan/Desktop/adb-logs/''$(date +%Y-%m-%d@%Hh%Mm%Ss)''-FullLogCat.log
您需要在别名中转义
$
,以便在每次调用别名时运行date命令。当前,只有在创建别名时才运行它
$ alias logfile="adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/\$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log"
$ alias | grep adb
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'\''$(date +%Y-%m-%d@%Hh%Mm%Ss)'\''-FullLogCat.log'
编辑:您还需要删除日期
扩展名周围的单引号,正如本线程中其他人指出的那样
$ alias logfile="adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'$(date +%Y-%m-%d@%Hh%Mm%Ss)'-FullLogCat.log"
$ alias | grep adb
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'\''2018-04-24@13h39m08s'\''-FullLogCat.log'
您可以在上面看到,在不转义的情况下,$
日期被硬编码到别名中
$ alias logfile="adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/\$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log"
$ alias | grep adb
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'\''$(date +%Y-%m-%d@%Hh%Mm%Ss)'\''-FullLogCat.log'
在本例中,我们转义了$
,它现在是别名的一部分,将按预期运行
HTH您需要在别名中转义
$
,以便在每次调用别名时运行date命令。当前,只有在创建别名时才运行它
$ alias logfile="adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/\$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log"
$ alias | grep adb
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'\''$(date +%Y-%m-%d@%Hh%Mm%Ss)'\''-FullLogCat.log'
编辑:您还需要删除日期
扩展名周围的单引号,正如本线程中其他人指出的那样
$ alias logfile="adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'$(date +%Y-%m-%d@%Hh%Mm%Ss)'-FullLogCat.log"
$ alias | grep adb
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'\''2018-04-24@13h39m08s'\''-FullLogCat.log'
您可以在上面看到,在不转义的情况下,$
日期被硬编码到别名中
$ alias logfile="adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/\$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log"
$ alias | grep adb
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/'\''$(date +%Y-%m-%d@%Hh%Mm%Ss)'\''-FullLogCat.log'
在本例中,我们转义了$
,它现在是别名的一部分,将按预期运行
HTH在实际执行别名之前,使用单引号防止命令替换
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log'
# ............^................................................................................................................^
在实际执行别名之前,使用单引号防止命令替换
alias logfile='adb logcat -v threadtime *:V | tee /c/Users/username/Desktop/adb-logs/$(date +%Y-%m-%d@%Hh%Mm%Ss)-FullLogCat.log'
# ............^................................................................................................................^
这真的应该是一个函数(正如你应该问自己的问题是“有什么理由不能成为函数吗?”): 从
bash
手册页:
对于几乎所有用途,别名都被shell函数取代
这真的应该是一个函数(正如你应该问自己的问题是“有什么理由不能成为函数吗?”): 从
bash
手册页:
对于几乎所有用途,别名都被shell函数取代
谢谢,我试过了,但由于某种原因它不起作用。我查找了转义引号(根据您的建议),并使其能够使用:alias logfile='adb logcat-v threadtime*:v|tee/c/Users/ghannan/Desktop/adb logs/''$(日期+%Y-%m-%d@%Hh%Mm%Ss)''-FullLogCat.log'此处可找到更多信息:此答案中的版本不起作用的原因是它在命令扩展周围加了单引号(即它有
…'$(date…)…
),单引号阻止命令扩展运行。工作的版本有双引号,允许命令和变量展开。顺便说一句,我实际上建议使用一个函数而不是别名来避免所有的引号混乱——请参见。或者参见下面我的答案:)是的,单引号也需要删除。。更新了对Reflect的回答谢谢,我试过了,但由于某些原因,它不起作用。我查找了转义引号(根据您的建议),并使其能够使用:alias logfile='adb logcat-v threadtime*:v|tee/c/Users/ghannan/Desktop/adb logs/''$(日期+%Y-%m-%d@%Hh%Mm%Ss)''-FullLogCat.log'此处可找到更多信息:此答案中的版本不起作用的原因是它在命令扩展周围加了单引号(即它有…'$(date…)…
),单引号阻止命令扩展运行。工作的版本有双引号,允许命令和变量展开。顺便说一句,我实际上建议使用一个函数而不是别名来避免所有的引号混乱——请参见。或者参见下面我的答案:)是的,单引号也需要删除。。更新答案以反映