zshのrmコマンドの便利なオプション

提供: FreeBSD入門
2015年3月7日 (土) 19:37時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「zshには、rmコマンドでうっかりファイルを削除し過ぎないようにするための安全装置が備わっています。 '''読み方''' ;rm:あ...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

zshには、rmコマンドでうっかりファイルを削除し過ぎないようにするための安全装置が備わっています。

読み方

rm
あーるえむ
zsh
ぜっとしぇ、ぜっとしぇる

概要

長年Unixを使用している方は、rmコマンドで、うっかり、ファイルを消しすぎた、という経験があると思います。そんな rm コマンドですが、zsh には、うっかりファイルを削除し過ぎないようにする設定が存在します。

rm * で確認してくれる

zshは、デフォルトの状態で rm * などのコマンドを実行するときに、削除の確認をしてくれます。

$ rm *
zsh: sure you want to delete all the files in /tmp/RM [yn]? n

ワイルドカードは、うっかりミスると悲劇につながるので、こういう安全装置があると便利です。rm *.c と打つつもりで、 rm * .c とかやってしまっても安心です。

-f オプションがついていても、ちゃんと確認してくれます。安心ですね。

$ rm -rf *
zsh: sure you want to delete all the files in /tmp/RM [yn]?

ワイルドカード利用時の確認をキャンセルする方法

ワイルドカードを使用したrmの安全装置を解除したい場合には、以下の設定をします。

setopt RM_STAR_SILENT

rmの確認を勢いでyesしてしまうのを防止する方法

setopt RM_STAR_WAIT

まず、rm を実行してみます。10秒待つよ、というメッセージが表示されます。この時に、y とか押しても、進みません。

$ rm *
zsh: sure you want to delete all the files in /tmp/RM? (waiting ten seconds)

10秒後に、 yes か no かを確認するプロンプトがやっと表示されます。

$ rm *
zsh: sure you want to delete all the files in /tmp/RM? (waiting ten seconds)
 [yn]?

ただし、 RM_STAR_SILENT を設定していると、 RM_STAR_WAIT の設定が有効になりません(つまり10秒待ちません)。

フルパスのrmは対象ではない

rmコマンドをフルパスで指定した場合には、zshのrmの安全装置オプションは機能しません。

$ /bin/rm *

関連項目




スポンサーリンク