Linux date命令的9个实用示例

符合Linux date命令。不,它不能让您度过一个浪漫的夜晚。但是它可以将日期格式化为您在终端机上写的情书的开头。足够接近?让我们开始吧。

在使用Bash编写脚本时,不可避免地需要打印日期或时间,并且该日期或时间通常需要采用特定格式才能满足其他功能的要求。那是date命令生效的时候。

如您所见,Linux中的date命令既简单又通用,这意味着它将接受各种输入并生成多种格式的日期。它还具有其他特殊功能,可以处理各种与时间相关的计算任务。学习日期的选项和语法肯定会使您更熟练地编写脚本,并且也许更准时。

日期命令基本语法

date命令的基本语法如下:

 date [OPTION]... [+FORMAT]

这意味着在输入date之后,您可以输入-d-s之类的选项来调用特定函数,我们将在下面进行解释。

您也可以使用格式字符串来跟进,格式字符串始终以+字符开头。这些字符串采用特定的格式化字符(也在下面列出)来定义输出。

Linux date命令实用示例

您可以将date命令以多种方式使用。让我们考虑相同的最常见和最有用的用例。

1.获取当前日期和时间

您可以通过单独传递date命令来以默认格式获取当前本地日期和时间。

 $ date
Mon 19 Apr 2021 12:41:17 PM CDT

如您所见,日期以简单且可预测的格式为您提供了相关的日期和时间信息。

2.获取过去或将来的日期

假设您在脚本中需要计算距现在正好一周的时间和日期。 date命令已使您满意。发出此命令,利用-d选项获取与将来日期有关的详细信息:

 $ date -d "next week"
Tue 27 Apr 2021 05:21:07 PM CDT

-d选项(缩写为date)是date命令真正发挥作用的地方。它将接受各种自定义日期字符串;他们可以是技术,如20200315,20年3月15日,或可读像2020年3月15日。但是,您也可以使用相对术语,例如明天昨天下周日等等。试一试,看看日期如何解释不同的输入字符串。

3.格式化日期

您可能在前面的两个示例中已经注意到,日期默认为非常特定的时间格式。那么,如果您需要其他格式的文件怎么办?

您可以将输出格式化为类似于printf命令的格式。例如,您可以使用以下命令打印当前年份:

 date +"Year: %Y"

+表示您需要格式化的字符串,以及之后出现在引号中的内容,日期将被处理并格式化输出。

以下是您最可能使用的格式字符的列表:

格式化字符 输出
%H 小时(00-24)
%一世 小时(01-12)
%M 分钟(00-59)
%S 秒(00-60)
%p 上午或下午
%一种 工作日全名(例如,星期日)
%一种 工作日的缩写名称(例如,Sun)
%w 工作日号码(0-6)
%d 每月的某天(01-31)
%j 一年中的哪一天(001-366)
%B 月全名(例如一月)
%b 月的缩写名称(例如Jan)
%m 月数(01-12)

您可以在终端中使用–help选项来获取格式字符的完整列表。

 date --help

4.获取星期几

日期格式的一种非常常见的实用用法是获取任何给定日期的星期几。例如,要检查1995年11月4日是星期几,请输入与此类似的命令:

 $ date -d "1996-04-11" +"%A"
Friday

-d选项指示您想要一个特定的日期, “ 1996-04-11”字符串指示您想要的日期, +“%A”格式指示您希望输出中的星期几。请记住,日期字符串可以采用多种格式,而不仅仅是此处指定的格式。

5.协调世界时

通过发出-u标志,您可以以世界标准时间(UTC)获得当前时间。

 $ date -u
Wed 21 Apr 2021 12:46:59 PM UTC

6.在另一个时区输出本地时间

如果需要获取其他任何时区的日期,可以通过在date命令之前设置TZ =环境变量来实现。

例如,您可以使用以下命令在“山区标准时间”(MST)中查看当前日期和时间:

 $ TZ=MST date
Tue 20 Apr 2021 03:45:29 PM MST

出于您的目的,只需将MST替换为您喜欢的任何时区的首字母即可。您还可以选择使用UTC表示法。例如,要获得相同的时区,请将MST替换为UTC + 7

此外,您可以命名大陆和主要城市以获得该特定城市的当地时间。例如:

 $ TZ=America/Phoenix date
Tue 20 Apr 2021 03:45:29 PM MST

7.获取文件的最后修改时间

例如,如果要创建备份,则通常需要获取文件的最后修改日期。您可以通过传递-r选项并命名文件来实现。

 $ date -r /etc/shadow
Wed 14 Apr 2021 07:53:02 AM CDT

您也可以在Linux中使用touch命令更改文件的时间戳。

8.输出和转换时代时间

您可以使用以下命令计算自Unix时代以来秒数:

 $ date +%s
1618955631

您还可以通过使用-d选项和@字符来逆转该过程并将Unix时间转换为人类可读的格式。

 $ date -d @1618955631
Tue 20 Apr 2021 04:53:51 PM CDT

如果您需要精确的秒数来确定其他设备的同步时间,那么计算Unix时间将很有用。

9.临时设置系统时间

您可以使用date命令从终端更改系统时钟,方法是传递-s参数,然后传递所需的时间。例如,您可以使用以下命令将系统时钟设置为将来的24小时:

 date -s "tomorrow"

请注意,您将需要sudo特权才能传递此命令。此外,更改可能不会持久(这意味着您的时钟将在重新引导后返回到上次时间),因为大多数发行版都使用其他实用程序来管理您的系统时钟,这些实用程序将覆盖启动时的更改。

Linux date命令解释

在生活中,您无法摆脱Linux的时间。这就是为什么通过date命令了解如何格式化和使用它至关重要。您一定会在Linux文件管理中遇到的一件事是文件附带的各种时间戳。