每次系统启动时我都应该检查文件“/etc/fstab”:
# UNCONFIGURED FSTAB FOR BASE SYSTEM
#/dev/disk/by-partlabel/userdata /userdata ext4 defaults 0 2
#/dev/disk/by-partlabel/oem /oem ext4 defaults 0 2
如果这些行:
- /dev/disk/by-partlabel/userdata
- /dev/disk/by-partlabel/oem
以“#”(注释)开头,删除注释并重新启动系统
我做了一个简单的批处理,从第 2 行开始删除每行的“#”:
#!/bin/bash
# Check if the WiFi driver will be loaded
echo -e "\n\r##############################"
echo -e "# Start reading /etc/fstab #"
echo -e "##############################\n\r"
cat /etc/fstab
# Backup the original file
cp /etc/fstab /etc/fstab.bak
# Remove '#' starting from the second line
sed -i '2,3s/#//' $fstabConfigPath
由于将来文件 /etc/fstab 可能包含其他行,因此我想改进脚本以仅删除指定行的“#”。
谢谢你的帮助,费德里科
答案1
sed
您应该要求仅对与模式匹配的行进行操作,而不是指向编号的行。您可以通过以下方法来做到这一点:
sed -ri.bak '/^#[/]dev[/]disk[/]by-partlabel[/](userdata|oem)( |\t)/ s/^#//' /etc/fstab
无需复制该文件,您可以sed -i
通过为其指定您想要的扩展名来为您创建该文件。
在重新启动之前检查文件是否确实被修改。
diff -q /etc/fstab /etc/fstab.bak || reboot
警告
自动编辑/etc/fstab
和重新启动似乎有点冒险——如果出现问题,您可能会发现系统无法启动。