Мне нужно добавить:
user_xattr,acl,barrier=1
в файл / etc / fstab. Есть ли способ сделать это через скрипт через скрипт?
Я только хочу отредактировать mount [[4]].
Вот что у меня есть, прежде чем вручную его редактировать :
UUID=eb287d10-60a8-4a9a-9148-5f907fc7a8be / ext4 errors=remount-ro 0 1
Вот как это выглядит после добавления строк вручную:
UUID=eb287d10-60a8-4a9a-9148-5f907fc7a8be / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1
Я знаю, что команда sed -i не будет работать здесь, потому что она добавляет только строки ...
Также сценарий запускается на нескольких компьютерах, поэтому он должен «знать», что UUID будет другим.
sed -i не используется только для добавления строк, как вы сказали. Его можно использовать во многих других случаях. И в вашем случае, как показано ниже:
str="/[[:space:]]*ext4[[:space:]]*errors=remount-ro[[:space:]]*0[[:space:]]*1"
sed -i.bak "s#$str#/ ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1#" /etc/fstab
Подобно этому $str, который равен чему-то вроде / ext4 errors=remount-r 0 1 (где каждое пространство может быть любой группой белых пробелов <tab> и <space>), будет заменен на / ext4 user_xattr,acl,barrier=1,errors=remount-ro 0 1 в файле /etc/fstab.
Класс [:space:] (который соответствует символам пробела <tab> и <space>) указан POSIX, поэтому у вас не должно быть проблем используя его в любой оболочке.