Что означает `, и в` man test`?

Изучая man test , я вижу, что под синопсисом для test есть возможность test EXPRESSION и test .

Что означает [ EXPRESSION ], [ ] and [OPTION ?

Почему скобки пусты и почему [OPTION пропустить скобку? Может ли кто-то интерпретировать это для меня?

 NAME test - check file types and compare values SYNOPSIS test EXPRESSION test [ EXPRESSION ] [ ] [ OPTION 

    [ это другое имя для test . Все три из этих строк – это командные строки, которые запускают test с некоторыми параметрами.

    В первой строке это стандартное тестирование: [ 5 -gt 4 ] совпадает с test 5 -gt 4 .

    Во втором, выражение опускается, что означает выход из false ( 0 arguments: Exit false (1) ).

    Для третьего случая вы, я полагаю, используем GNU coreutils. В test GNU текст справки содержит следующее примечание:

     NOTE: [ honors the --help and --version options, but test does not. test treats each of those as it treats any other nonempty STRING. 

    Это расширение, отличное от POSIX ; по-видимому, мотивация заключается в том, что для обработки этих аргументов требуются test как строки, подобные любым другим. [ способен отличить случай опциона от случая строки наличием закрывающей ] скобки.

    Обратите внимание, что ваша оболочка, скорее всего, предоставит свой собственный [ , и вам придется /bin/\[ использовать эту версию.

    [ это то же самое, что и test как оболочка, встроенная в некоторые оболочки.

    Если вы посмотрите дальше на man test , в нем описывается, каков действительный EXPRESSION вы можете протестировать:

    По умолчанию опущен EXPRESSION – false. В противном случае EXPRESSION является истинным или ложным и устанавливает статус выхода. Это один из …

    Это может быть не очевидно для вас на man-странице, но в старых / некоторых других оболочках оба [ и test доступны как действительные команды, что означает, что место, которое вы видите в [ EXPRESSION ] является обязательным для того, чтобы EXPRESSION принималось как аргумент для [ / test . Таким образом, даже для оболочек, которые предлагают их как встроенные, они сохраняют этот формат для совместимости.

    И, как объяснено в ответе @ dr01 , когда я набираю это, правая квадратная скобка необязательна.

    [ OPTION самом деле отсутствует скобка.

    На самом деле, возможно, удивительно, [ это команда (расположенная в /usr/bin/[ ), эквивалентная test . Поэтому было (по крайней мере теоретически) разрешено использовать только левую скобку, а правая скобка служила синтаксическим сахаром. Тем не менее, новые версии оболочки требуют этого .