FreeBSD初心者運用日記 このページをアンテナに追加

 | 

2009-02-02

[][]unix timeについて 23:59 unix timeについて - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - unix timeについて - FreeBSD初心者運用日記 unix timeについて - FreeBSD初心者運用日記 のブックマークコメント

1970年01月01日からの経過秒数のことらしい。

詳細は、以下のページを参照

Unix time - Wikipedia

[][][]hashコマンドについて 23:32 hashコマンドについて - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - hashコマンドについて - FreeBSD初心者運用日記 hashコマンドについて - FreeBSD初心者運用日記 のブックマークコメント

bash限定な話。(zshもだけど)

hashコマンドについて説明する前に、コマンドを実行したときの動きを説明する。

以下のようにhogeコマンドを実行したとする。

$ hoge

そうすると、環境変数PATHに登録されている複数のディレクトリからhogeコマンドをサーチするわけですが、

よく使うコマンドを毎回サーチするのは無駄なので、bashとかzshなんかは使用するパスをキャッシュしてるらしい。

このキャッシュを登録してる所が、ハッシュテーブルというところらしい。

ハッシュテーブルの中身は以下のようにして表示できる

~$ hash
hits    command
   3    /usr/bin/man
   3    /bin/ls

ちなみに、キャッシュをクリアする場合は、hash -rする。

~$ hash -r
~$ hash
hash: hash table empty

typeコマンドなんかで、以下のようにhashedと表示されるやつは、

~$ type ls
ls is hashed (/bin/ls)

[][][]lsコマンドでファイルアクセス時刻やファイル作成時刻を表示する 22:39 lsコマンドでファイルアクセス時刻やファイル作成時刻を表示する - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - lsコマンドでファイルアクセス時刻やファイル作成時刻を表示する - FreeBSD初心者運用日記 lsコマンドでファイルアクセス時刻やファイル作成時刻を表示する - FreeBSD初心者運用日記 のブックマークコメント

ファイルアクセス時刻を表示

~$ ls -lu hoge.dat
-rw-r--r--  1 bush  wheel  220 Feb  2 22:47 hoge.dat

lsコマンドでファイル作成時刻を表示する方法も調べたみた。

ls -lcで表示されるのはどうもファイル作成時刻とは違うものらしい。

以下のページによると、伝統的なUNIXはファイル作成時刻は保持しないらしい。。orz

参考:UNIXの部屋 コマンド:タイムスタンプ (*BSD/Linux)

でも、このページによるとFreeBSDで使用されているUFS2では、inodeが生成された時刻を保持しているらしい。

これはかなり驚きの事実です。。

どうもls -lcのcは、create timeではなくchange timeのことらしいです。(#まぎらわしい、、

[][][]statコマンドについて 22:34 statコマンドについて - FreeBSD初心者運用日記 を含むブックマーク はてなブックマーク - statコマンドについて - FreeBSD初心者運用日記 statコマンドについて - FreeBSD初心者運用日記 のブックマークコメント

パラメタなし

~$ stat hoge.dat
1043 5800402 -rw-r--r-- 1 bush wheel 23165207 220 "Feb  2 22:34:38 2009" "Feb  2 22:33:25 2009" "Feb  2 22:33:25 2009" "Feb  2 22:31:14 2009" 16384 4 0 hoge.dat

ダブルコーテーションで囲まれている部分は、左からアクセス時刻、更新時刻、更新時刻、ステータス更新時刻のようだ。

なぜ、更新時刻が二つあるのか謎。(ToDo)

ステータス更新時刻については下記ページを参照

参考:UNIXの部屋 コマンド:タイムスタンプ (*BSD/Linux)

それぞれの時刻は-tオプションで、整形できる

~$ stat -t "%y%m%d%H%M%S" hoge.dat
1043 5800402 -rw-r--r-- 1 bush wheel 23165568 9819 "090203000710" "090203000343" "090203000343" "090202223114" 16384 20 0 hoge.dat

statコマンドで、ファイル更新時刻降順でファイル名ソートする方法

~/hoge$ ls -ltrT
total 0
-rw-r--r--  1 bush  wheel  0 Feb  3 00:24:22 2009 aaa
-rw-r--r--  1 bush  wheel  0 Feb  3 00:24:27 2009 bbb
-rw-r--r--  1 bush  wheel  0 Feb  3 00:24:30 2009 ccc
~/hoge$ stat -f "%m%t%Sm%t%N" * | sort -rn | cut -f3
ccc
bbb
aaa

stat -fで指定しているものの意味は以下のとおり

%m・・・unix timeで更新時刻を表示

%t・・・タブを出力

%Sm・・・更新日時をstrftime(3)フォーマットで表示

%N・・・ファイル名を表示

 |