`test` и` [`- разные бинарные файлы, любая разница?

Я заметил, отвечая на другой вопрос, что test и [ разные бинарные файлы, но [ manpage вызывает test . Помимо требования о кончине ] , есть ли разница? Если нет, то почему они разделяют двоичные файлы вместо символической ссылки? (Они также являются bash builtins, и bash также не показывает различий.)

2 Solutions collect form web for “`test` и` [`- разные бинарные файлы, любая разница?”

Исходный код объясняет разницу как способ обработки опции --help .

  /* Recognize --help or --version, but only when invoked in the "[" form, when the last argument is not "]". Use direct parsing, rather than parse_long_options, to avoid accepting abbreviations. POSIX allows "[ --help" and "[ --version" to have the usual GNU behavior, but it requires "test --help" and "test --version" to exit silently with status 0. */ 

Демонстрируя

 $ /usr/bin/test --help $ $ /usr/bin/[ --help Usage: test EXPRESSION or: test or: [ EXPRESSION ] or: [ ] or: [ OPTION Exit with the status determined by EXPRESSION. [...] 

В встроенной версии bash единственная разница заключается в том, что [ требуется ] в конце, как вы сказали.

Обычно они представляют собой одну и ту же двоичную систему с жесткими ссылками. В зависимости от оболочки внутренняя реализация может использоваться для test и [ тесты, а не двоичные. Это более эффективно с точки зрения нереста процесса и может предоставлять различные варианты, чем предоставляет двоичный программный test .

Помимо различий в формате вызова, оба они обеспечивают одинаковые функциональные возможности.

  • Как сделать вывод для grep неудачным?
  • Как узнать, существует ли каталог?
  • Модернизирован, чтобы проверить ветвь по ошибке в debian ... как я могу вернуться к стабильной?
  • Что означает '-size +0' в команде 'test'
  • Как я могу использовать команды bash, если тесты и найти команды вместе?
  • Как использовать отрицание команды в цикле while с grep в сценарии оболочки?
  • Правильное литье типов в сценарии оболочки для использования с циклом while и модулем
  • Множественный оператор, который включает специальные символы, используя при возникновении ошибок
  • bash: -eq vs. == и `bc` тип вывода
  • Linux и Unix - лучшая ОС в мире.