電源とかカメラとか初期化とか・・・
こんにちは、Qです。
このブログ、いちおう当番制になっているのですが
毎回、意味不明のお題を突き付けてきます。
今回のお題は「電源」と「カメラ」。。。いったい何を書けと?
「電源」 。。。UPS?
「カメラ」。。。何も浮かびません。
■「電源」まめ知識
・UPS、サーバールームの片隅やラックの一番下に
ひっそりと鎮座していますが、クソ重いです。
その中身は鉛です。
・その昔、某電話会社は非常用電源として
ファントム(戦闘機)と同じエンジンを廻してました。
さすがにもう引退していると思いますが。
個人的にはココで締めたいところですが。。。
■ファイルの初期化
もうすぐ新年度ということで
初心に戻ってファイルの初期化のお話です。
スクリプトやプログラムを書いてると
処理開始の前に一時ファイルを初期化したくなるケースが
多々あります。
bash環境でのお話になりますが、ちょいちょい見かけるのがコレです。
-------------------------------------
# echo > file
-------------------------------------
echoコマンドで空データを投げ込んで初期化しているように
見えますが、ファイルの中身は空っぽにはなりません。
空ファイル作ってみます。
-------------------------------------
# touch file1
# ls -l file1
-rw-r--r-- 1 root root 0 Mar 22 20:36 file1
-------------------------------------
適当に文字列を放り込みます。
-------------------------------------
# echo hoge > file1
# ls -l file1
-rw-r--r-- 1 root root 5 Mar 22 20:36 file1
-------------------------------------
初期化したつもりになってみます。
-------------------------------------
# echo > file1
# ls -l file1
-rw-r--r-- 1 root root 1 Mar 22 20:38 file1
-------------------------------------
ファイルサイズは 1 byte です。何やら残ってます。
catコマンドで覗いてみます。
-------------------------------------
# cat file1
#
-------------------------------------
返ってきたのは空白が1行、でも空行ではありません。
odコマンドでバイナリ表示してみます。
-------------------------------------
# od -c file1
0000000 \n
0000001
-------------------------------------
“\n” 改行です。1 byte の正体です。
それでは、ファイルの中身を本気で空っぽにするためには、
つまりファイルサイズを “0” にするためにはどうするか。
方法1
-------------------------------------
# : > file1
# ls -l file1
-rw-r--r-- 1 root root 0 Mar 22 21:08 file1
# od -c file1
0000000
-------------------------------------
“:” を放り込んだら “\n” 改行も消えて空っぽになりました。
“:” コロンです。
bashに組み込まれている立派なコマンドです。
“:” は何もしません。
常にリターンコード “0 (真)” を返す、面白いヤツです。
繰り返しますが “:” は立派なコマンドです。
常に “0 (真)” を返すことから、こんな使い方もできます。
コマンドラインから叩いてみて下さい。
-------------------------------------
# while : ; do echo AHO; sleep 1; done
-------------------------------------
[Ctrl+C] で終了しない限り、永遠に AHO と罵ってもらえます。
方法2
-------------------------------------
# cat /dev/null > file1
-------------------------------------
見たまんま “/dev/null” をcatして投げ込んでます。
“/dev/null” は読み出そうとしてもデータを返しません。
これを利用して初期化してるわけです。
「”rm” してファイル再作成すればいいじゃん」
身も蓋もない声が聴こえてきそうですが
“/dev/null” に向かって言ってくださいね。
それでは。