dashではpushd, popdが使えない。¶
Debianでは/bin/shは、dash、つまりDebian Almquist shellへのシンボリックリンクになっています。これはPOSIX準拠のシェルです。ここまでは知っていたのですが、組み込みコマンドのpushdやpopdが使えない(無い)ことに気づきました。!!!ということは、pushdやpopdはPOSIX準拠のコマンドではなかったということ?
早い話、shebangが/bin/bashになっている下記のコードが使えますが、
#!/bin/bash
pushd /tmp/hoge >/dev/null
printf "%-20s : " "common data"
git pull
for d in $(find /tmp/hoge/data/* -type d -prune)
do
pushd $d >/dev/null
printf "%-20s : " $(basename $d)
git pull
popd >/dev/null
done
popd >/dev/null
/bin/shになっている場合ではエラーになります。
#!/bin/sh
pushd /tmp/hoge >/dev/null
printf "%-20s : " "common data"
git pull
for d in $(find /tmp/hoge/data/* -type d -prune)
do
pushd $d >/dev/null
printf "%-20s : " $(basename $d)
git pull
popd >/dev/null
done
popd >/dev/null
自宅でも仕事できるのは良いのですが…。¶
VPNで接続して家からでも仕事できるのは良いのですが、なんかいつまでも続けてしまって切りが無いですね。予定日過ぎている現時点では、平日日中も在宅勤務できると安心なんですけどねぇ。
LaTeXでディレクトリツリーを表示する。¶
treeコマンドを普通に使うと、
my-first-blueprint/
|-- files
| `-- tmp
|-- manifests
`-- templates
`-- etc
|-- apt
|-- cloud
|-- cron.d
|-- ldap
|-- openldap
| `-- cacerts
|-- pam.d
|-- perl
| `-- XML
| `-- SAX
|-- security
|-- ssh
|-- update-notifier
`-- xml
19 directories
と表示されますが、バッククオートがLaTeXではフォントによっては違った見え方になります。なので、
$ tree -d my-first-blueprint | sed 's/`/+/g'
my-first-blueprint/
|-- files
| +-- tmp
|-- manifests
+-- templates
+-- etc
|-- apt
|-- cloud
|-- cron.d
|-- ldap
|-- openldap
| +-- cacerts
|-- pam.d
|-- perl
| +-- XML
| +-- SAX
|-- security
|-- ssh
|-- update-notifier
+-- xml
19 directories
としてやれば、lstlisting環境などで意図どおりの表示になるのですが、treeコマンド自体のオプションで指定できないんでしょうかね。
ちなみに、LANG=en_US.UTF-8になっている、Ubuntu 10.04では、treeコマンドのパス表示に使われる記号が全角の罫線になっています。
my-first-blueprint/
├── files
│ └── tmp
├── manifests
└── templates
└── etc
├── apt
├── cloud
├── cron.d
├── ldap
├── openldap
│ └── cacerts
├── pam.d
├── perl
│ └── XML
│ └── SAX
├── security
├── ssh
├── update-notifier
└── xml
19 directories
罫線記号は全角なのでlstlistingなどの環境の中ではもれなくズレます。LANG=Cに指定すればバッククオートの形式になります。Sidではならないんですけど、何ででしょう。バージョンの違い? 1
余談。¶
最初、LANG=Cすりゃええやん、と気づかず、下記のようなワンライナー書いてました。ダサ。
$ tree -d my-first-blueprint/ | sed '{
s/└─/+-/g
s/├─/+-/g
s/─/--/g
s/│/| /g
}'
- 1
Lucidでは1.5.3, Sidでは1.6.0です。
最近よく考えていること。¶
git pullするのとrsyncでPUSHするのとどっちがええかなぁ。
processingが面白そう。¶
オライリーの ビューティフルビジュアライゼーション を読んで、面白いなと思った記事で使われていたのが、 processing というプログラミング言語。開発元からダウンロードして展開し、processingというシェルスクリプトを実行すると、専用エディタが起動します。
File → Sketchbook → modes → Java → examples → Books → Visualizing data → ch6-zipdecode → round_09c_focus_handlingというサンプルを開いて、実行してみたのが次の動画です。数字はキーボードで入力し、Backspaceで消しています。
[http://www.youtube.com/watch?v=_K0OxAX44H0:movie]
このサンプルではフォーカスの制御を行うコードが約400行、色の制御を行うのが約50行です。専用エディタだと、Runボタンですぐに実行できるのは良いのですけど、普通に自分の好きなエディタでコード書いて、コマンドラインで実行するとかの方がうれしいので、ちょっと調べてみようかと思います。ちなみにDebianでもlibprocessing-core-javaという名前でパッケージになっていますが、名前の通りコラライブラリだけなので、Upstreamで配布されているものと比べ、どのくらいできるのかも気になるところです。