Что делает команда «:»?

Я читал несколько команд на сайте explainhell.com и нашел интересную команду:

:(){ :|:& };: 

В настоящее время я под OSX и единственная ссылка на него, которую я мог найти, была на builtin странице man ( man builtin ), но это не помогло, потому что она говорит только, является ли это внешней, cshell или командой sh.

  Command External csh(1) sh(1) ! No No Yes % No Yes No . No No Yes : No Yes Yes 

Итак, что делает выполнение : делать?

На терминале у меня нет выхода:

 $ : $ 

2 Solutions collect form web for “Что делает команда «:»?”

В этом случае : не является командой, это имя функции, которую вы определяете. Команда :(){ :|:& };: это то, что называется «forkbomb» – это командная последовательность, которая определяет функцию, называемую : сообщает оболочке, что функция состоит из вызова : переводит вывод в другой экземпляр : , и с учетом второго экземпляра. Конечная ;: последовательность завершает определение функции, а затем вызывает ее. Каждый вызов : приводит к еще двум копиям : выполняется, так же быстро, как оболочка может их порождать.
Это приведет к использованию всех системных ресурсов, что в конечном итоге приведет к замедлению или сбою системы, если нет установленного предела процесса.

Если вы не переопределяете это значение, оно имеет значение по умолчанию как no-op. Вы можете увидеть его документацию с help :

 % help : :: : No effect; the command does nothing. A zero exit code is returned. 

Легенда гласит, что давно, на заре Интернета, это был способ поместить текст в ваши сценарии оболочки, которые не будут выполнены. Другими словами, это своего рода комментарий. У меня нет письменного источника для этого.

  • используя расширение скобки для изменения имен файлов, а не расширений?
  • Захват вывода / перенаправления команд, скопированных с помощью &&
  • Существует ли стандартная аббревиатура для 'find. -name foo 'или мне нужна функция для этого?
  • Переменные назначения влияют на текущую рабочую оболочку
  • Выполнить команду, когда система неактивна и когда она активна снова
  • Что более идиоматично в сценарии bash: `|| true` или `|| : `?
  • Что делает эта команда?
  • найти набор общих файлов между несколькими каталогами?
  • Как обрабатывать символ пробела при вводе пользователем
  • Как отправить ввод в программу на C с помощью сценария оболочки
  • Эквивалент «который» в sh
  • Linux и Unix - лучшая ОС в мире.