リカーシブオプションが-rと-Rどちらかわからない

chmodを使うとき、recursive(再帰的)オプションの指定を間違えてしまうことがよくあります。

~$ chmod -r 755 dir
chmod: `755' にアクセスできません: そのようなファイルやディレクトリはありません
~$ echo $?
~$ 1
~$ chmod -R 755 dir
~$ echo $?
~$ 0
~$ 

(echo $?は前コマンドの結果がOKであれば0が表示されます)

よく使うコマンドを整理すると、案外recuresiveオプションを使うコマンドが少ないことに気づきます。

-Rがrecusiveオプションのコマンド

ls
chmod
chown
chgrp
grep
cp
rm

-rがrecusiveオプションのコマンド

grep
cp
rm
diff

grepや、cp、rmは、-rでも-Rでもrecursive指定となります。実際-rオプションしか使えないのは、diffだけです。

diff以外は全部-Rで指定すると、記憶しておけば問題ないかと思います。

-rや-Rは、recursiveという英単語の頭文字から命名されていますが、頭文字がrから始まる英単語はrecursivだけではありません。reverseもrから始まります。reverseの意味として、-rオプションを使うコマンドに関しても、それほど多くありません。

-rがreverseオプションのコマンド

ls
sort

まとめると、

ディレクトリを扱う場合に、再帰オプションを使うなら大文字R、例外としてdiff
-R

逆順ソートさせるために、reverseオプションを使うなら小文字r
-r

ということになります。

One response to “リカーシブオプションが-rと-Rどちらかわからない

  1. Grneitegs! I’ve been reading your blog for a long time now and finally got the courage to go ahead and give you a shout out from Lubbock Tx! Just wanted to mention keep up the excellent job!

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA