连接到 bash 中的上一行

连接到 bash 中的上一行

我正在尝试将 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在其输出末尾输出换行符。当使用datein时,这个换行符会被删除,$(...)就像我在上面的 shell 函数的第二个实现中所做的那样。

相关内容