[雑記] チルダの補完
飲み会の席で聞いた恐い話です.
あるディレクトリに,次のように ~ という名前のサブディレクトリがあるとします.
$ 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 \~/
こちらはエスケープされているので安全です.
トラックバック
トラックバック URI: https://www.pakunet.jp/hoge/trackback/2005051401
トラックバックはありません.