在 Linux 中,我可以通过使用上个月获得
date -d "last month" '+%Y%m'
Run Code Online (Sandbox Code Playgroud)
或者
date -d "1 month ago" '+%Y%m'
Run Code Online (Sandbox Code Playgroud)
但是说,今天是 3 月 31 日,如果我在顶部运行命令,它会显示 201603,但是无论我现在在哪一天,我都想得到上个月;我该怎么做?
我可以通过使用像获取上个月的第一天/最后一天这样的解决方法来实现这一点,但我想知道有没有什么优雅的方法可以做到这一点?
date -d "-$(date +%d) days" '+%Y%m' #get last day of previous month
Run Code Online (Sandbox Code Playgroud) 在机器 A(运行 Oracle Linux Server 6.4 版)中,我可以使用以下命令智能地获取 1 个月前的日期:
$(date -d"1 month ago" '+%Y0%m')
Run Code Online (Sandbox Code Playgroud)
但它在机器 B(AIX) 中不起作用,有没有其他方法可以实现这一点?两者都在.sh
文件中并运行:
sh Test.sh
Run Code Online (Sandbox Code Playgroud)
机器 B 中显示的错误:
date: illegal option -- d
Usage: date [-u] [+Field Descriptors]
Run Code Online (Sandbox Code Playgroud) 我在 linux 脚本中看到有一个命令参数> /dev/null 2>&1
,我知道它是将输出重定向到 null,意味着将其静音。我也知道 0,1,2(STDIN、STDOUT、STDERR)的编号,但我不明白为什么需要这条线?
2>&1
Run Code Online (Sandbox Code Playgroud)
基本上我想知道有什么区别
>/dev/null
Run Code Online (Sandbox Code Playgroud)
和
>/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)