目覚しをセットした携帯電話を会社に忘れていく。 するとそれを止めるために早朝に出社することが出来る。
問題は置き忘れたことを覚えていないといけないことだけど(ほんとにそれだけ?)。
バカが征くより。
ここで、このコマンドがどういう経緯で出来たのか語れたりすると良いのでしょうが、残念ながら全く知りません。もしだれか知ってたらお願いします。
自分は昔、一緒に仕事していた人が
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
うん。本当にリダイレクトだけで出来ますね。
大昔のシェルには # がなかったのでスクリプトでは : がコメントがわりでした。<br>もちろん、現在の # と完全に同じというわけにはいきませんが。<br>zsh で > a.file をやると、標準入力を食いに行くので注意。
そういえばDOSの.batでは、rem代わりにラベル":"を使っていた記憶があります。