Очень грустно когда одни и те же консольные команды в разных операционных системах ведут себя по разному, особенно когда приходится разрабатывать приложения для широкого круга ОС, пусть даже на основе Linux. Столкнулся с разным поведением команд в MacOs, прекрасно работающих в CentOs иDebian.
Различие sed в MacOs и CentOs
Возможно различий существует больше, но лучше не использовать флаг -i, который сохраняет результат выполнения команды в тот же файл, из которого было произведено чтение.
Описание в CentOs:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Описание в MacOs:
-i extension
Edit files in-place, saving backups with the specified extension.
If a zero-length extension is given, no backup will be saved. It
is not recommended to give a zero-length extension when in-place
editing files, as you risk corruption or partial content in situ-
ations where disk space is exhausted, etc.
Как видите, на разных платформах флаг -i имеет различающийся функционал. Поэтому лучше использовать более платформо-независимый вариант:
sed -e "s/1/2/" myfile > tmp && mv tmp myfile
Различия chown и chmod в MacOs и CentOs
В CentOs и Debian для рекурсивной смены владельца файлов, директорий, а также установки прав доступа одинаково успешно выполнятся следующие команды:
chown 1000:1000 -R app
chown -R 1000:1000 app
chmod 755 -R app
chmod -R 755 app
Однако, MacOs сильно поругается на те, где флаг -R идёт после [OWNER][:[GROUP]] и MODE[,MODE].