Tag: bash Tag: シェルスクリプト Tag: date Tag: linux

  • 2017-05-19 db@webより引用


dateコマンド

現在の日付、時間を表示

$ date
Mon Feb  7 18:20:12 JST 2011

現在の年、月、日を文字としてスクリプト等で使う

$ grep `date +%Y/%m%d` uriage.csv | ./total.pl

・・・uriage.csvが会社の商品売上げなどのCSV形式ファイルでデータ項目として売り上げた年月日を"2011/02/07"の形式で含む場合。本日のみの売上げを検索して、集計するスクリプトにパイプ機能で渡す。

現在から1週間前の日付を表示する

$ date -d "1 week ago" 
Mon Jan 31 18:26:43 JST 2011
$ date 
Mon Feb  7 18:27:17 JST 2011

その他の日付を計算する

"1 week ago" でも、"-1 week" でも同様となり、100日前なら、"-100 day"、"-100 days"、"100 days ago"などが指定でき、"100 day"とすれば、100日先となります。1ヶ月前なら、"1 month ago"、1年前なら、"1 year ago"で指定が可能です。常に前月や前年とデータを比較するような場合に活用出来そうです。

先月の最終日

$ date; date -d "`date +%d` day ago"
Mon Feb  7 18:48:21 JST 2011
Mon Jan 31 18:48:21 JST 2011

去年の年末

$ date;m1=`date +%m`;m2=`expr $m1 - 1`;date -d "`date +%d` days ago + $m2 months ago"
Mon Feb  7 19:04:14 JST 2011
Fri Dec 31 19:04:14 JST 2010

今月末

$ date;date -d "`date +%d` days ago + 1 months"
Mon Feb  7 19:14:04 JST 2011
Mon Feb 28 19:14:04 JST 2011

去年の年末、今月末あたりは、内部でどのように処理しているかによっては予期しない結果になるかもしれない。


その他例

$ date +"%Y-%m-%d %H:%M:%S %w"
2013-10-27 11:20:33 0

日毎に名前を変えてバックアップする場合は、シェルスクリプト内で次のような感じにします。

FNAME=`date +"backup_%Y-%m-%d.tar.gz"`
tar czvplf ../$FNAME  -C  /home/isao/public_html/test  .

次のようなファイル名でバックアップが出来ます。

backup_2013-10-25.tar.gz
backup_2013-10-26.tar.gz
backup_2013-10-27.tar.gz


dmesgで機能のログを表示

dmesg --time-format iso | grep `date -d "1 day ago" "+%Y-%m-%d"`
2019-08-05T06:15:08,800716+0900 usb 1-1.1.4: new high-speed USB device number 5 using ehci-pci
2019-08-05T06:15:08,909569+0900 usb 1-1.1.4: New USB device found, idVendor=0a17, idProduct=0114
2019-08-05T06:15:08,909573+0900 usb 1-1.1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2019-08-05T06:15:08,909576+0900 usb 1-1.1.4: Product: Optio RZ10
2019-08-05T06:15:08,909578+0900 usb 1-1.1.4: Manufacturer: PENTAX
2019-08-05T06:15:08,909580+0900 usb 1-1.1.4: SerialNumber: 000009014701
2019-08-05T06:15:08,910116+0900 usb-storage 1-1.1.4:1.0: USB Mass Storage device detected
2019-08-05T06:15:08,911673+0900 scsi host5: usb-storage 1-1.1.4:1.0
2019-08-05T06:15:09,929385+0900 scsi 5:0:0:0: Direct-Access     PENTAX   Optio RZ10       1.00 PQ: 0 ANSI: 2
2019-08-05T06:15:09,929870+0900 sd 5:0:0:0: Attached scsi generic sg3 type 0
 
----- 中略 ----- 
 
2019-08-05T11:35:45,357990+0900 vboxdrv: 0000000000000000 VBoxEhciR0.r0
2019-08-05T12:09:40,920032+0900 device eth0 left promiscuous mode
2019-08-05T12:09:41,064261+0900 vboxnetflt: 9217 out of 269959 packets were not sent (directed to host)
2019-08-05T12:31:56,344457+0900 vboxdrv: 0000000000000000 VMMR0.r0
2019-08-05T12:31:56,579901+0900 vboxdrv: 0000000000000000 VBoxDDR0.r0
2019-08-05T12:31:56,593805+0900 VBoxNetFlt: attached to 'eth0' / 10:bf:48:7a:44:26
2019-08-05T12:31:56,820358+0900 device eth0 entered promiscuous mode
2019-08-05T12:31:56,827059+0900 vboxdrv: 0000000000000000 VBoxEhciR0.r0
2019-08-05T12:36:55,076627+0900 device eth0 left promiscuous mode
2019-08-05T12:36:55,172056+0900 vboxnetflt: 2623 out of 467131 packets were not sent (directed to host)