Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash别名在文件名中创建当前时间戳_Bash_Git_Date_Adb - Fatal编程技术网

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” 这似乎创建了一个日志文件,并在屏幕上显

首先,我在这里读了这篇文章:

然而,当我运行它时,我总是得到相同的时间戳。这对我来说毫无意义

我正在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”

这似乎创建了一个日志文件,并在屏幕上显示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…)…
),单引号阻止命令扩展运行。工作的版本有双引号,允许命令和变量展开。顺便说一句,我实际上建议使用一个函数而不是别名来避免所有的引号混乱——请参见。或者参见下面我的答案:)是的,单引号也需要删除。。更新答案以反映