因此,我在我的 Ubuntu 16.04 机器上摆弄 LXC。
我想要/需要将我的容器设置rootfs
为特定大小的图像。(不,zfs 在我的情况下不起作用)
因此,我已经通过 bash 脚本创建容器,一切设置完毕,并完美运行,现在我需要将挂载添加到我的主机,fstab
以便在主机重启时持久保留挂载
所有这些都运行正常,容器/.img/mounts 全部创建并运行良好,并且在重启后仍然有效。
现在,在容器销毁时,我需要删除该行,fstab
因为一旦容器被销毁,我就不需要安装它了……我知道我可能可以让它不受伤害,但为了保持清洁fstab
,假设我需要来做到这一点。技巧是,我希望能够通过 shell 脚本来做到这一点,这样我就不必fstab
每次认为有必要销毁容器时手动编辑我的文件。
我添加以下行
T=$(grep -ir "/home/containers/$UsersName/rootfs" /etc/fstab);
if [ ! -n $T ]; then
echo "/home/$UsersName.img /home/containers/$UsersName/rootfs xfs noatime 0 0" >> /etc/fstab;
mount -a;
fi;
其中$UserName
= 预先指定的字符串。
我怎样才能通过我的 bash 脚本删除该行?
答案1
查看关于如何删除一行的答案。有几种方法可以实现这一点,但也有一些注意事项,例如转义字符串和匹配模式。这使得很难给出一个一劳永逸的答案。
sed
既快又简单,但需要转义斜线。
反向 grep ( grep -v
) 可能对你有用。只要确保没有匹配任何不需要的内容即可。
在您的示例中:grep -v "$UsersName.img" /etc/fstab > /etc/fstab.bak; mv /etc/fstab.bak /etc/fstab
除包含的行之外的每一行都会匹配并重定向到 fstab.bak,最后重命名为 fstab。