Будьте более конкретными в своем регулярном выражении:
sed '/path *= *$/ s#$#/data#' file.ini
Выражение /path *= *$/
будет соответствовать любой строке с path
, за которой следует =
(, возможно, окруженная пробелами ), но без ничего, кроме пробелов после этого и конца строки. Фактическая замена поместит /data
в конец строки.
Это тоже сработает:
sed "s#path *= *$#& /data#" file.ini
Если вам нужно уточнить, какой раздел файла INI -вы хотите изменить, расширьте диапазон команды s
:
sed '/\[homes\]/,/\[printers\]/ s#path *= *$#& /dev#' file.ini
Замена будет применена только к секции [homes]
.
Перенаправьте на новый файл или используйте -i
соответствующим образом с любым из приведенных выше решений.
Из соображений безопасности вам необходимо быть root (в качестве пользователя root или через sudo
), чтобы изменить владельца файла или каталога. Если вы root, это просто
chown jenkins /a/b
chgrp jenkins /a/b
РЕДАКТИРОВАТЬ:
Я не пользователь Mac, но я понял, что команда на Mac будет dscl
, как в:
sudo dscl. create /Groups/jenkins
sudo dscl. create /Groups/jenkins RealName "Jenkins"
sudo dscl. create /Groups/jenkins passwd "*"
sudo dscl. create /Groups/jenkins gid 1234
для группы и
dscl. -create /Users/jenkins
dscl. -create /Users/jenkins UserShell /bin/bash
dscl. -create /Users/jenkins RealName "Joe Admin"
dscl. -create /Users/jenkins UniqueID "1234"
dscl. -create /Users/jenkins PrimaryGroupID 1234
dscl. -create /Users/jenkins NFSHomeDirectory /Users/jenkins
для пользователя.