天天看點

Linux date指令-顯示和設定系統日期與時間 壓縮包以YYMMDD格式指令時間設定

date --help

用法:date [選項]... [+格式]

 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

以給定的格式顯示目前時間,或是設定系統日期。

 -d,--date=字元串        顯示指定字元串所描述的時間,而非目前時間

 -f,--file=日期檔案        類似--date,從日期檔案中按行讀入時間描述

 -r, --reference=檔案        顯示檔案指定檔案的最後修改時間

 -R, --rfc-2822        以RFC 2822格式輸出日期和時間

               例如:2006年8月7日,星期一 12:34:56 -0600

     --rfc-3339=TIMESPEC    以RFC 3339 格式輸出日期和時間。

               TIMESPEC=`date‘,`seconds‘,或 `ns‘

               表示日期和時間的顯示精度。

               日期和時間單元由單個的空格分開:

               2006-08-07 12:34:56-06:00

 -s, --set=字元串             設定指定字元串來分開時間

 -u, --utc, --universal    輸出或者設定協調的通用時間

     --help        顯示此幫助資訊并退出

     --version        顯示版本資訊并退出

給定的格式FORMAT 控制着輸出,解釋序列如下:

 %%    一個文字的 %

 %a    目前locale 的星期名縮寫(例如: 日,代表星期日)

 %A    目前locale 的星期名全稱 (如:星期日)

 %b    目前locale 的月名縮寫 (如:一,代表一月)

 %B    目前locale 的月名全稱 (如:一月)

 %c    目前locale 的日期和時間 (如:2005年3月3日 星期四 23:05:25)

 %C    世紀;比如 %Y,通常為省略目前年份的後兩位數字(例如:20)

 %d    按月計的日期(例如:01)

 %D    按月計的日期;等于%m/%d/%y

 %e    按月計的日期,添加空格,等于%_d

 %F    完整日期格式,等價于 %Y-%m-%d

 %g    ISO-8601 格式年份的最後兩位 (參見%G)

 %G    ISO-8601 格式年份 (參見%V),一般隻和 %V 結合使用

 %h    等于%b

 %H    小時(00-23)

 %I    小時(00-12)

 %j    按年計的日期(001-366)

 %k    時(0-23)

 %l    時(1-12)

 %m    月份(01-12)

 %M    分(00-59)

 %n    換行

 %N    納秒(000000000-999999999)

 %p    目前locale 下的"上午"或者"下午",未知時輸出為空

 %P    與%p 類似,但是輸出小寫字母

 %r    目前locale 下的 12 小時時鐘時間 (如:11:11:04 下午)

 %R    24 小時時間的時和分,等價于 %H:%M

 %s    自UTC 時間 1970-01-01 00:00:00 以來所經過的秒數

 %S    秒(00-60)

 %t    輸出制表符 Tab

 %T    時間,等于%H:%M:%S

 %u    星期,1 代表星期一

 %U    一年中的第幾周,以周日為每星期第一天(00-53)

 %V    ISO-8601 格式規範下的一年中第幾周,以周一為每星期第一天(01-53)

 %w    一星期中的第幾日(0-6),0 代表周一

 %W    一年中的第幾周,以周一為每星期第一天(00-53)

 %x    目前locale 下的日期描述 (如:12/31/99)

 %X    目前locale 下的時間描述 (如:23:13:48)

 %y    年份最後兩位數位 (00-99)

 %Y    年份

 %z +hhmm        數字時區(例如,-0400)

 %:z +hh:mm        數字時區(例如,-04:00)

 %::z +hh:mm:ss    數字時區(例如,-04:00:00)

 %:::z            數字時區帶有必要的精度 (例如,-04,+05:30)

 %Z            按字母表排序的時區縮寫 (例如,EDT)

預設情況下,日期的數字區域以0 填充。

以下可選标記可以跟在"%"後:

 - (連字元)不填充該域

 _ (下劃線)以空格填充

 0 (數字0)以0 填充

 ^ 如果可能,使用大寫字母

 # 如果可能,使用相反的大小寫

在任何标記之後還允許一個可選的域寬度指定,它是一個十進制數字。

作為一個可選的修飾聲明,它可以是E,在可能的情況下使用本地環境關聯的

表示方式;或者是O,在可能的情況下使用本地環境關聯的數字元号。

請向[email protected] 報告date 的錯誤

GNU coreutils 項目首頁:<http://www.gnu.org/software/coreutils/>

GNU 軟體一般性幫助:<http://www.gnu.org/gethelp/>

請向<http://translationproject.org/team/zh_CN.html> 報告date 的翻譯錯誤

要擷取完整文檔,請運作:info coreutils ‘date invocation‘

例如

以YYMMDD格式先知目前日志

[root@localhost ~]# date ‘+%Y%m%d‘

20140514

[root@localhost ~]# date "+ %Y_%m_%d"

2014_05_14

tar 壓縮包以目前日期時間指令

[root@localhost ~]# touch 1.test

[root@localhost ~]# tar zcfv `date ‘+%Y%m%d‘`_test.tar.gz 1.test

1.test

[root@localhost ~]# ls

1.test  20140514_test.tar.gz

[root@localhost ~]# tar zcfv `date ‘+%F‘`test.tar.gz 1.test

1.test  2014-05-14test.tar.gz  20140514_test.tar.gz

我們一般使用“date -s”指令來修改系統時間

比如将系統時間設定成2011年7月13日的指令:date -s 07/13/2011

将系統時間設定成11點12分0秒的指令:date -s 11:12:00

注意:這裡說的是系統時間,是linux由作業系統維護的。

在系統啟動時,Linux作業系統将時間從CMOS中讀到系統時間變量中,以後修改時間通過修改系統時間實作。為了保持系統時間與CMOS時間的一緻性,Linux每隔一段時間會将系統時間寫入CMOS。由于該同步是每隔一段時間(大約是11分鐘)進行的,在我們執行date -s後,如果馬上重起機器,修改時間就有可能沒有被寫入CMOS,這就是問題的原因。

如果要確定修改生效可以執行如下指令。

#clock –w

這個指令強制把系統時間寫入CMOS。

因為日期和時間很重要,這或許就是開發網絡時間協定(NTP:Network Time Protocol)的原因。讓我們了解下date指令是如何工作的。

要顯示系統日期,隻要輸入:

日期有很多格式。如果你不喜歡預設的格式,你可以換一種格式。你可能會想"為什麼我需要改變格式? 預設的輸出對我足夠了。"

是的,你說的對,但是當你在程式設計時,預設輸出或許無法滿足你的需求,是以需要一些自定義輸出。

RFC 2822 的格式像這樣 : 星期, 日-月-年, 小時:分鐘:秒 時區

時區 +0700 等同于 GMT +7。

預設上date使用的是定義在/etc/localtime的時區。有效時區資料定義在/usr/share/timezones。

在 上, UTC 意思是

世界上主要的時鐘和時間的标準。這是格林位置标準時間幾個非常相近的替代者之一。

以UTC形式顯示日期和時間, 使用 -u 參數

要自定義你的日期格式, 使用加号 (+)

%D 格式是 年/月/日 的格式.

如果你想的話,你可以輸出日期的名字。下面是一些例子:

還有很多的日期格式。隻要輸入:

或者

來顯示date指令的文法和參數。

基本上,date指令會翻譯所有所有的百分号(%)開頭的格式和輸出在引号("")内所有的内容。

通常地,你希望你的系統日期和時間是自動設定的。如果由于一些原因,你想要手動修改它,我們可以使用這個指令。

這會設定你目前的系統日期和時間到一月 25, 2014 and 09:17:00 AM。請注意,你必須擁有root特權來這麼做。不然你會得到這樣一個錯誤。

如果你希望重置你的系統日期和時間到原始值,你可以用這個技巧。

這回設定你的系統日期和時間到hwclock指令的輸出的樣子。

還記得我之前說為什麼你需要改變date的輸出麼?一個答案是你或許需要程式設計。讓我們看下bash腳本下的一個例子。

儲存并運作它:

如果你發現權限拒絕錯誤資訊,輸入:

另外一個例子是子你備份流程中使用date。

它會壓縮檔案夾/home/pungki/Documents到一個位于/daily_backup folder的檔案backup-2013-12-06.tar.gz中。(譯注:通過“` 指令 `”來在指令行内嵌其它指令,這個字元不是單引号,而是和波浪号~同一個鍵位的那個符号。)

date可能被認為在某些方面不重要。但是date扮演了一個重要的角色。要想知道關于date指令更多的細節,在你的控制台下輸入man date通路man頁面。

本文出自 “” 部落格,請務必保留此出處

繼續閱讀