我正在尝试将 an 添加alias
到 my 中.bashrc
,以便运行以下命令> push 123
会将行2017-08-29/push/123
(包含当前日期)添加到文件末尾。
添加别名:
alias push='date +%F/push/ >> log.txt ; echo $1 >> log.txt'
几乎可以解决问题,这会添加两行,如下所示
2017-08-29/push/
123
请帮我把它变成单行。
答案1
push () { date "+%F/push/$1" >> /tmp/pushlog.txt; }
这定义了一个将字符串附加到/tmp/pushlog.txt
文件的 shell 函数。
使用的格式字符串date
包含 shell 函数的第一个命令行参数。
bash-4.4$ push 123
bash-4.4$ push "hello world"
bash-4.4$ push "%s"
bash-4.4$
bash-4.4$ cat /tmp/pushlog.txt
2017-08-29/push/123
2017-08-29/push/hello world
2017-08-29/push/1504041277
如果您打算使用push
推送可能被解释的字符串date
(如上一个示例),并且这不是您想要的,请改用:
push () { printf '%s/push/%s\n' "$(date '+%F')" "$1" >> /tmp/pushlog.txt; }
文件中出现不需要的换行符的原因是date
在其输出末尾输出换行符。当使用date
in时,这个换行符会被删除,$(...)
就像我在上面的 shell 函数的第二个实现中所做的那样。