ターミナルで現在時刻を表示し続ける方法

コマンドラインで実行するスクリプトで、同じ行に表示し続けたり上書きして表示するものがある。 例えばパッケージのインストールになどで出る進捗表示などである。同じような出力をするにはエスケープシーケンスを知っておく必要がある。ASCII コードの制御文字と呼ばれるものだ。CR, LF といった改行コードに関する以外にも様々なものがある。 echo hogehoge とやると、hogehogeが出力されて次の行にプロンプトが移る。 $ echo hogehoge hogehoge $ echo -e “hogehoge\c”; echo 123 と実行すると \c が指定されると行末での改行が行われなくなる*1ので、次のように続けて表示される。 $ echo -e “hogehoge\c”; echo 123 hogehoge123 $ \r はキャリッジリターン(復帰)である。これを使うとプロンプトの先頭にカーソルを動かしたことになる。 そんなわけでいきなりまとめだが同じ位置に現在時刻をたんたんと表示するスクリプトは下記のように書ける。 #!/bin/sh while true do time=`date +%H:%M:%S` echo -e “$time\c” sleep 1 echo -e “\r\c” done exit 0 *1:これは echo -n オプションを使うことでも可能である。

2009年3月19日 · Toshimitsu Takahashi

プロバイダの DNS のせいで Google に繋がらないから、自前の BIND で解決してしまうには

下記は過去の話です。現在、復旧しています(2008/03/16 21:55 現在) リアルタイムネタです。OCN、ぷららから Google が見られないみたいです。 単に Windows PC からだけなら Windows\System32\drivers\etc\hosts にエントリ書くだけですが、一台ではないので 自 BIND サーバで設定してしまった。 named.conf に Google.com, Google.co.jp ゾーンを追加する /var/named/chroot/etc/named.conf に追記する。 zone "google.com" { type master; file "google.zone"; }; zone "google.co.jp" { type master; file "google.zone"; }; ゾーンファイル Google.zone を追加する /var/named/chroot/var/named/Google.zone を新規に作成して下記を定義する。 $TTL 86400 @ IN SOA dns.mydomain.local. root.mydomain.local. ( 2007102601 ; serial 3600 ; refresh 1hr 900 ; retry 15min 604800 ; expire 1w 86400 ; min 24hr ) IN NS dns.mydomain.local. www IN A 64.233.161.18 反映 /etc/init.d/named reload などで反映。 ...

2008年3月16日 · Toshimitsu Takahashi

find でサイズが 2GB を超えるファイルを探すには

$ find . -size +2147483648c c がないとブロックサイズになる。+ はより大きい(>)の意味。

2007年9月19日 · Toshimitsu Takahashi

getent で /etc/nsswitch.conf に従ってネームサービスを検索する

getent コマンドを使うと、nsswitch.conf の構成に従って情報を検索できる。 hosts: files dns となっていれば、/etc/hosts, /etc/resolv.conf の設定従い DNS から順に探してくれる。 $ getent hosts d.hatena.ne.jp 59.106.108.77 d.hatena.ne.jp

2007年9月12日 · Toshimitsu Takahashi

echo で改行しないようにするには

基本的に -n オプションでよい。でも Solaris でシェルだと \c を付けないとダメ。 echo test echo -n test echo test\c クロスプラットフォームで動かすスクリプトは printf の方が良さそう。 printf "test\n" printf test

2007年9月10日 · Toshimitsu Takahashi

Solaris アカウンティング ファイルの整理

/var/adm の wtmpx,utmpx,wtmp,utmp アカウティング・ファイルを整理する。 削除できないため、null コピーでファイルサイズを 0 にする。 # cp /dev/null /var/adm/wtmpx 古いものを取っておきたければ… # cp /var/adm/wtmpx /tmp # gzip /tmp/wtmpx # cp /dev/null /var/adm/wtmpx # mv /tmp/wtmpx.gz /var/adm

2007年8月28日 · Toshimitsu Takahashi