要将stdout重定向到Bash中的截断文件,我知道要使用:
cmd > file.txt
Run Code Online (Sandbox Code Playgroud)
要在Bash中重定向stdout,追加到文件,我知道要使用:
cmd >> file.txt
Run Code Online (Sandbox Code Playgroud)
要将stdout和stderr重定向到截断的文件,我知道要使用:
cmd &> file.txt
Run Code Online (Sandbox Code Playgroud)
如何重定向附加到文件的stdout和stderr?cmd &>> file.txt不适合我.
我需要一个将Unix时间戳转换为日期的shell命令或脚本.输入可以来自第一个参数或来自stdin,允许以下使用模式:
ts2date 1267619929
Run Code Online (Sandbox Code Playgroud)
和
echo 1267619929 | ts2date
Run Code Online (Sandbox Code Playgroud)
两个命令都应输出"Wed Mar 3 13:38:49 2010".
我知道
date -d @<timestamp in seconds>
Run Code Online (Sandbox Code Playgroud)
和
awk '{print strftime("%c", <timestamp in seconds>)}'
Run Code Online (Sandbox Code Playgroud)
但是如果我有毫秒的话呢?在没有删除毫秒时间戳的最后三个字符的情况下,有没有简单的方法可以做到这一点(不是说丢失字符是困难的,但我认为这样一个简单的任务会有一步一步)?
我们可以使用内置printf函数打印当前时间,而无需调用date像这样的外部命令,如下所示:
printf '%(%Y-%m-%d:%H:%M:%S)T %s\n' -1
# sample output: 2019-03-30:17:39:36,846
Run Code Online (Sandbox Code Playgroud)
我们如何让 printf 也打印毫秒或纳秒?在格式字符串中使用%3N或%N不起作用:
printf '%(%Y-%m-%d:%H:%M:%S,%3N)T %s\n' -1 # outputs 2019-03-30:17:38:16,%3N
printf '%(%Y-%m-%d:%H:%M:%S,%N)T %s\n' -1 # outputs 2019-03-30:17:38:16,%N
Run Code Online (Sandbox Code Playgroud)
但是, date 命令工作正常:
date +%Y-%m-%d:%H:%M:%S,%3N # gives 2019-03-30:17:39:36,846
date +%Y-%m-%d:%H:%M:%S,%N # gives 2019-03-30:17:39:36,160643077
Run Code Online (Sandbox Code Playgroud)
这是在 Red Hat Linux 7.3 版上。