最近知ったのだけど、Unicodeには1~12月まで、1日~31日までを一文字で表現する文字が存在している。電報記号というらしい。 知らなかった。電報使ったこと無いし、実際にこういった文字が使われているのかもわからないけど。

以下のコマンドで一覧を出力してみる。

zsh -c "echo {$'\U32C0'..$'\U32CB'}"
zsh -c "echo {$'\U33E0'..$'\U33FE'}"
blacknon@BS-PUB-UBUNTU-01:~$ zsh -c "echo {$'\U32C0'..$'\U32CB'}"
㋀ ㋁ ㋂ ㋃ ㋄ ㋅ ㋆ ㋇ ㋈ ㋉ ㋊...

声優の井上喜久子さんの17歳教(いくつになっても年齢は17歳基準で名乗る。17歳とXXX日みたいな感じで。)なるものがあるのだが、それを指定した誕生日から計算させるのをシェル芸でできそうだったのでやってみた。で、できたので一応備忘として残しておく。

実は今まで知らなかったのだが、dateコマンドでは以下のようにすることで、指定した日付+XX年後、みたいな指定ができるようだ(+XX年後とかは知ってたのだが、さらに日付を指定できるのは知らなかった)。

date -d 'YYYY/MM/DD 10 year ago'
blacknon@BS-PUB-UBUNTU-01:~$ date...

先日出席したシェル芸勉強会で、処理の途中で一年分(というか、指定期間)の日付をdateコマンドで出力させる必要があった。
で、日単位であれば以下のようにコマンドを実行することで、一覧として出力可能だ。

echo '2016/01/01\ +'{0..365}'\ days' | LANG=C xargs -n1 date -d

わかりやすいかどうかわからないけど、解説。
dateコマンドの-d(--date)オプションでは、以下のように"日付 + ○ (days|month)"などのように、日付を計算させることが出来るのだ。
例えば、「2016/01/01 + 1 month」...


dateコマンドで現在時刻を騙す『libfaketime』

dateコマンドでは、「-d」で○○日後とか、□月後といった指定で日付を取得することが出来る。
しかし、特定の日付を指定した上で○○日後の日付を指定する事が出来ない。

もしdateコマンドで特定の日付の○○日後、次の○曜日といった指定をする場合、今回紹介する『libfaketime』を用いると便利だろう。
これは、dateコマンドが読み込む現在日時を変数「FAKETIME」とすることで、システム時刻に変更を加える事なく特定の日付をdateコマンドで出力させることが出来る。

1.インストール

まずはインストール。
以下コマンドを実行し、コンパイル・インストールを行う。

gi...

シェルスクリプトで指定した月の第何何曜日を取得する

いい感じで家でお酒飲んでて、ゴミ出しの日を意識してふと思い立ち、指定した日の第何何曜日(第3水曜とか、第4金曜とか…)をbashで取得出来ないかなと思ったのでやってみた。
ncalとかあると一行で取得出来そうだったけど、手元のCentOS 7だと入ってなかったのでそれを使わずに出来ないか調べた。

で、dateコマンドのみでで上手く出せれば良かったんだけど、少し目論見が外れてしまった。
「-d」で月初日と次の曜日を同時に指定できればよかったんだけど…

[root@test-centos7 ~]# date
2015年 11月 27日 金曜日 00:20:52 JST
[root@...

dateコマンドで覚えておきたい使い方5個

Linux・UNIXで日時を取得する際に良く使用されるdateコマンド。
今回は、このdateコマンドで覚えておくと便利な使い方についてをまとめてみる事にする。

1.基本的な使い方

説明不要と思われるが、基本的には以下のようにコマンドを実行することで、現在のシステム時間を取得する事が出来る。

date

[root@test-centos7 ~]# date
2015年  9月 29日 火曜日 05:59:42 JST

2.出力フォーマットを指定する

dateコマンドでは、「+」以降に以下のようなフォーマットを組み合わせて指定することで、出力される時刻のフォーマット...


サーバ上で作業する際、良くやるのが作業当日の日付でフォルダ(例:20141201など)を作成し、そこにバックアップした設定ファイルや作業に使うファイルを設置すること。
ただ、"作業当日の日付"となると事前に用意してある手順書では直接記述出来ないため、毎回その部分はコマンドのコピー&ペーストでは無く、手動で入力となってしまう。

これはちょっと面倒なので、コマンドをコピー&ペーストで一発で当日の作業用フォルダを作成するコマンドについて記述する。
といっても、dateコマンドを「`(バッククォーテーション)」で囲んで、整形して出力させるだけなんだけどね。。。

1.作業用フォルダの作成

...