トップ «前の日記(2006-08-29) 最新 次の日記(2006-09-01)» 編集

TPRG: 迷走メモ書き

[Donate to CCjp]
2000|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|07|08|11|12|
2009|01|02|
2010|04|06|09|

2006-08-31

_ [misc] 早く出社する方法

目覚しをセットした携帯電話を会社に忘れていく。 するとそれを止めるために早朝に出社することが出来る。

問題は置き忘れたことを覚えていないといけないことだけど(ほんとにそれだけ?)。

_ [misc] ファイルを空にする続き

バカが征くより。

: (コロン)コマンド

ここで、このコマンドがどういう経緯で出来たのか語れたりすると良いのでしょうが、残念ながら全く知りません。もしだれか知ってたらお願いします。

自分は昔、一緒に仕事していた人が

while :; do sleep 10; 何か; done

とかやっているの見て、まさに「なんすかそのコロン?」だったんですが。 機能的には /bin/true と同じようです。0 を返して、単になにもしないコマンド。

POSIX にも入っているそうなのですが、省略形がわざわざ用意されると言うことは、よく使われていたんでしょうか?  似たようなものは "[" とか "." がありますけれど、"." と比べても使用頻度は微妙な気がするのだけども。

まあでも短いので、上の無限ループとか変数展開なんかには便利です。 自分はよくこんな使い捨てスクリプトを書いたり。

#!/bin/bash
: ${DB_NAME:="myapp_dev"}
: ${DB_USER:="dev"}
: ${DB_PASS:="moge"}
echo "hoge" | mysql -v -u $DB_USER -p"$DB_PATH" "$DB_NAME"

普段はそのまま起動して、変えたいときだけ

DB_NAME=myapp_prod ./script_path

の様に。

しかし本題に戻ると、リダイレクトを使えるということは

閑話休題。

リダイレクトでファイルを空にするには、 単に何も出力しなくコマンドならなんでも良いわけなので、 (副作用が無い必要はあるけれど)

echo -n "" > a.file
false > a.file
test > a.file
[ ] > a.file
:> a.file 

多分いくらでも出てくると思いますが、一番短いだろうなあと思ったわけです。

……しかし。今考えてみれば、そもそもコマンドいらんのではないか? 

> a.file

うん。本当にリダイレクトだけで出来ますね。

本日のツッコミ(全2件) [ツッコミを入れる]
_ 通りすがり (2006-09-01 18:15)

大昔のシェルには # がなかったのでスクリプトでは : がコメントがわりでした。<br>もちろん、現在の # と完全に同じというわけにはいきませんが。<br>zsh で > a.file をやると、標準入力を食いに行くので注意。

_ もう寝る (2006-09-08 02:42)

そういえばDOSの.batでは、rem代わりにラベル":"を使っていた記憶があります。

お名前:
E-mail:
コメント:
[]


Tatsuki Sugiura <sugi@nemui.org>