私はしばしばタスクを再帰的に適用したいと思います。 grepなどの一部のコマンドは、小文字のrを使用して再帰を表します。例えば
grep -r foo .
他のコマンドは大文字Rを好むようです。
chmod -R 755 .
私はしばしばこれを間違って理解し、どちらがどれであるかを忘れます。これらの主張のケース選択の背後にはどのようなロジックがありますか?
ベストアンサー1
再帰ディレクトリナビゲーションオプション(、、、、、、、、ls
)を持つほとんどのPOSIXコマンドには、この機能があります。chmod
chgrp
chmod
cp
rm
-R
rm
はい、-r
POSIX以前はもともとそうだったからです。
ツリーのナビゲーション中にシンボリックリンクが見つかると、動作は異なります。 POSIXは、ユーザーがシンボリックリンクをどのように処理するかを決定する機会を提供するために、//オプションを追加して指定しなかった場合、デフォルト値をそのまま維持して-L
一貫性を維持しようとしました。-H
P
POSIXにはまたgrep
はがありません。-r
-R
GNUはもともとgrep
両方ではありませんでした。-r
1998年に追加されました。これはシンボリックリンク以降です。
-R
他のユーティリティとの一貫性のために、2001年に同義語として追加されました。それはまだシンボリックリンクに従います。
2012年(grep 2.12)では、もはや-r
シンボリックリンクに従わないように変更されました。それはおそらくgrepが他の目的に使用され-L
たためです。-H
BSDはgrep
長い間GNU grepに基づいていました。それらのいくつかは独自のバージョンを書き直し、GNUとの互換性をある程度維持しましたgrep
。 Apple OS / Xはシンボリックリンクの問題を異なる方法で解決します。同じで、シンボリックリンクに従わない-r
。ただし、シンボリックリンクをたどる // 'オプションと同様に機能するオプションが-R
あります。-S
chmod
cp
find
-L