Я вижу это все время на страницах справочника, обычно ссылаясь на --verbose flags.

Со страницы справочника ln :

Опции -h, -i, -n и -v нестандартны, и их использование в скриптах не рекомендуется.

Что именно это означает? Специально для этого случая у меня есть скрипт, который создает символические ссылки, и я хочу, чтобы он записал список созданных ссылок в файл. Могу ли я использовать ln -v или я должен использовать другой метод?

2 ответа2

1

Помните, что есть несколько версий UNIX, с несколькими версиями утилит командной строки.

Возможно, лучшая формулировка будет:

Опции -h, -i, -n и -v нестандартны для разных версий, и их использование в переносимых скриптах не рекомендуется.

1

Полная цитата выглядит так:

Опции -h, -i, -n и -v нестандартны, и их использование в скриптах не рекомендуется. Они предоставляются исключительно для совместимости с другими реализациями ln.

Я просмотрел несколько версий справочной страницы ln и заметил, что ни одна из этих опций не появляется в спецификации POSIX для ln или в более старых версиях UNIX. Ранние версии не имели вариантов вообще. Опция -s была добавлена, когда были изобретены символические ссылки, а -f была стандартной опцией, добавленной к ряду команд для обработки очень распространенного варианта использования. Это было для мейнстрима Unix, где люди предпочитали минималистичные наборы инструментов.

Я предполагаю, но мне кажется, что большинство опций, используемых в популярных реализациях ln, были придуманы Project GNU. Проект GNU ("GNU - это не Unix!"") начинался как волонтерская работа по созданию бесплатного клона Unix. Как видите, Project GNU любит взламывать маленькие умные функции, поэтому имеет смысл, чтобы все эти новые опции были их идеей.

Project GNU никогда не создавал работающую ОС (они все еще работают над ней!), Но их библиотеки и утилиты стали стандартными функциями дистрибутивов Linux. (Именно поэтому приверженцы GNU настаивают на обращении к «GNU /Linux».) Стали популярными функции Linux, как правило, копируемые в различные реализации Unix. Некоторые (но не все) дополнения GNU к ln, кажется, появились в основных реализациях Unix, таких как Solaris и BSD. Я подозреваю, что люди из BSD чувствовали, что эти четыре варианта были навязаны им - отсюда и грубое осуждение на странице руководства.

Утилиты OS X основаны на утилитах для BSD, поэтому там также присутствует устаревание. Я не нашел его ни в одной системе, не основанной на BSD.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .