cmdA || cmdB Фрагмент cmdB означает «Запустить cmdA и, если он не работает (завершается с кодом выхода, отличным от 0), запустить cmdB ».
С https://stackoverflow.com/q/3224878/4482039: двоеточие : в bash это команда, которая ничего не делает.
Таким образом, rm -r node_modules || :; ... фрагмент может быть интерпретирован как:
- Запустите
rm -r node_modules .
- Если это не удается (поскольку файл / каталог
node_modules не существует или у нас нет прав), ничего не предпринимайте (игнорируйте ошибку)
- Запустите остаток строки.
Это способ игнорировать ошибки, потому что в этом случае ошибки ожидаются. В частности, для rm этот способ более безопасен, чем флаг -f поскольку он не заставляет удалять файлы, которые rm обычно отказывается удалять.