Большинство команд POSIX , которые имеют рекурсивный вариант обхода каталога ( ls
, 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
был изменен, и теперь он больше не следует символическим ссылкам, возможно потому -L
, что он -H
уже использовался для чего-то другого.
BSD grep
долгое время были основаны на GNU grep. Некоторые из них переписали свои собственные и сохранили более или менее совместимость с GNU grep
. Apple OS / X решает проблему символической ссылки по-другому. -r
и -R
то же самое и не переходите по символическим ссылкам. Там есть -S
вариант , однако , что действует как chmod
/ cp
/ find
«s -L
варианта следовать по символическим ссылкам.