Добавить строки в файл с командами

Мне нужно добавить:

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 будет другим.

1
задан 5 April 2014 в 05:22

1 ответ

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, поэтому у вас не должно быть проблем используя его в любой оболочке.

1
ответ дан 24 May 2018 в 09:48
  • 1
    +1. Вы можете использовать & вместо $str с правой стороны. – glenn jackman 4 April 2014 в 19:41
  • 2
    Это не сработает, OP указал, что UUID будут отличаться, так как это нужно запускать на нескольких машинах. Кроме того, это произойдет, если поля fstab будут разделены вкладками или даже несколькими пробелами. – terdon♦ 4 April 2014 в 19:45

Другие вопросы по тегам:

Похожие вопросы: