Почему сообщение об ошибке для двух двоеточий как команда (: :) в bash имеет три двоеточия, но один двоеточие не дает результата?

Если я введу

::

в оболочку bash, я получаю:

-bash: ::: command not found

Но только один : не приводит к выходу. Почему это?

27
задан 17 December 2017 в 11:31

15 ответов

Последний двоеточие является частью сообщения «не найден» по умолчанию:

$ x
x: command not found
$ ::
::: command not found

Причина, по которой единственный двоеточие ничего не дает, заключается в том, что : является допустимой командой, хотя она ничего не делает ( кроме возврата TRUE). Из раздела SHELL BUILTIN COMMANDS в man bash:

   : [arguments]
          No effect; the command does nothing beyond  expanding  arguments
          and  performing any specified redirections.  A zero exit code is
          returned.

Вы иногда увидите его в конструкциях, подобных

while :
do
  something
done

См. Например, Какая цель служит для толстой кишки?

55
ответ дан 22 May 2018 в 16:59
  • 1
    да, это самый полный комментарий .. гораздо более красноречивый, чем мой .. гораздо лучше объяснил: D – John Orion 15 December 2017 в 05:34

Попробуйте любую другую несуществующую команду, и вы увидите, что : служит для нормальной работы на английском языке:

$ ---
---: command not found
8
ответ дан 22 May 2018 в 16:59

Добавленный двоеточие является частью самого сообщения об ошибке. Если один из типов cd ow приводит к bash: cd: ow: No such file or directory, это показывает, что ошибка помещает дополнительный двоеточие : No such file or directory

6
ответ дан 22 May 2018 в 16:59
$ ::
bash: ::: command not found
$ kkkk
bash: kkkk: command not found

третий является разделителем от форматирования

в bash a : является пустой инструкцией void строки

5
ответ дан 22 May 2018 в 16:59

вы получаете 3 двоеточия, потому что формат ошибки содержит двоеточие:

bash: <command>: command not found
4
ответ дан 22 May 2018 в 16:59

Добавленный двоеточие является частью самого сообщения об ошибке. Если один из типов cd ow приводит к bash: cd: ow: No such file or directory, это показывает, что ошибка помещает дополнительный двоеточие : No such file or directory

6
ответ дан 18 July 2018 в 01:10

Последний двоеточие является частью сообщения «не найден» по умолчанию:

$ x x: command not found $ :: ::: command not found

Причина, по которой единственный двоеточие ничего не дает, заключается в том, что : является допустимой командой, хотя она ничего не делает ( кроме возврата TRUE). Из раздела SHELL BUILTIN COMMANDS в man bash:

: [arguments] No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned.

Вы иногда увидите его в конструкциях, подобных

while : do something done

См. Например, Какая цель служит для толстой кишки?

54
ответ дан 18 July 2018 в 01:10

Попробуйте любую другую несуществующую команду, и вы увидите, что : служит для нормальной работы на английском языке:

$ --- ---: command not found
8
ответ дан 18 July 2018 в 01:10
$ :: bash: ::: command not found $ kkkk bash: kkkk: command not found

третий является разделителем от форматирования

в bash a : является пустой инструкцией void строки

5
ответ дан 18 July 2018 в 01:10

вы получаете 3 двоеточия, потому что формат ошибки содержит двоеточие:

bash: <command>: command not found
4
ответ дан 18 July 2018 в 01:10

Добавленный двоеточие является частью самого сообщения об ошибке. Если один из типов cd ow приводит к bash: cd: ow: No such file or directory, это показывает, что ошибка помещает дополнительный двоеточие : No such file or directory

6
ответ дан 24 July 2018 в 17:20

Последний двоеточие является частью сообщения «не найден» по умолчанию:

$ x x: command not found $ :: ::: command not found

Причина, по которой единственный двоеточие ничего не дает, заключается в том, что : является допустимой командой, хотя она ничего не делает ( кроме возврата TRUE). Из раздела SHELL BUILTIN COMMANDS в man bash:

: [arguments] No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned.

Вы иногда увидите его в конструкциях, подобных

while : do something done

См. Например, Какая цель служит для толстой кишки?

54
ответ дан 24 July 2018 в 17:20
  • 1
    да, это самый полный комментарий .. гораздо более красноречивый, чем мой .. гораздо лучше объяснил: D – John Orion 15 December 2017 в 05:34

Попробуйте любую другую несуществующую команду, и вы увидите, что : служит для нормальной работы на английском языке:

$ --- ---: command not found
8
ответ дан 24 July 2018 в 17:20
$ :: bash: ::: command not found $ kkkk bash: kkkk: command not found

третий является разделителем от форматирования

в bash a : является пустой инструкцией void строки

5
ответ дан 24 July 2018 в 17:20

вы получаете 3 двоеточия, потому что формат ошибки содержит двоеточие:

bash: <command>: command not found
4
ответ дан 24 July 2018 в 17:20
  • 1
    «3 столбца» опечатка для "3 колоний" – Barmar 15 December 2017 в 20:44
  • 2
    DOS command.com и Windows cmd.exe имеют сходную, но противоположную ситуацию: : явно является меткой goto (а не командой) и часто переименовывается как символ комментария (например, :: This is a comment). – grawity 17 December 2017 в 17:55

Другие вопросы по тегам:

Похожие вопросы: