hoge diary - May 14, 2005

[雑記] チルダの補完

飲み会の席で聞いた恐い話です.

あるディレクトリに,次のように ~ という名前のサブディレクトリがあるとします.

$ ls -F
~/

さて,使用しているシェルが bash であると仮定して,このディレクトリを消すべく,rm コマンドを実行しようとします.

rmSpace-rfSpace

ここまでキーを入力したとき,このディレクトリにはサブディレクトリが 1 つだけだからといって,ここで Tab キーによる補完を何気なく使用すると恐ろしいことになります.では Tab を入力してみます.

$ rm -rf ~

補完されましたが,何とチルダがエスケープされていません.このままクセで Enter を入力しようもんなら... ああ,考えただけでも恐ろしい.

また同様に,同じディレクトリがカレントディレクトリとして,bash のプロンプトに続けて rmSpace-rfSpace\~ と入力してから...

$ rm -rf \~

Tab を入力すると...

$ rm -rf ~/

何とエスケープ用のバックスラッシュが消えてしまいました.これも恐ろしい話です.

ちなみに,zsh 4.2.0 (補完は "autoload -U compinit; compinit" とします)で同じ補完を行わせると...

$ rm -rf \~/

こちらはエスケープされているので安全です.

コメント

名前(何でも可):

テキスト(http:// を含む内容は投稿できません):

トラックバック

トラックバック URI: https://www.pakunet.jp/hoge/trackback/2005051401

トラックバックはありません.


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Thu Nov 01 01:16:43 JST 2007