Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sed 如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID?_Sed - Fatal编程技术网

Sed 如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID?

Sed 如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID?,sed,Sed,如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID cat /etc/fstab /dev/mapper/vg00-root / xfs defaults 0 0 UUID=6fc6605f-796e-4e0b-a8f7-8b339c46b1a9 /boot xfs defaults 0 0 /dev/mapper/vg00-

如何在/etc/fstab文件中找到字符串boot并用内核设备名/dev/sda1替换UUID

cat /etc/fstab
/dev/mapper/vg00-root   /                       xfs     defaults        0 0
UUID=6fc6605f-796e-4e0b-a8f7-8b339c46b1a9 /boot                   xfs     defaults        0 0
/dev/mapper/vg00-tmp    /tmp                    xfs     defaults        0 0
/dev/mapper/vg00-var    /var                    xfs     defaults        0 0
/dev/mapper/vg00-crash  /var/crash              xfs     defaults        0 0
/dev/mapper/vg00-log    /var/log                xfs     defaults        0 0
/dev/mapper/vg00-swap   swap                    swap    defaults        0 0

sed 's/UUID/\/dev\/sda1/g' /etc/fstab

按uuid列出/dev/disk/下的文件:

ls -l /dev/disk/by-uuid/
…为了得到这样的东西:

lrwxrwxrwx 1 root root 10 ott  4 18:37 53bc3708-e45d-4352-977a-a62c6a4fd5c8 -> ../../dm-1
lrwxrwxrwx 1 root root 10 ott  4 18:37 6a23dfcf-e36d-45c8-a468-d3976b5239f3 -> ../../dm-0
lrwxrwxrwx 1 root root 10 ott  4 18:37 7d6e75e9-7ed2-4412-8acd-2de50ffa0034 -> ../../sda1
如您所见,您可以在输出的右侧找到老式的设备名称,作为链接目标


在uplevel目录中,您可以找到按id和路径分类的磁盘,而不仅仅是按uuid分类的磁盘。漂亮

我假设您想要为
/dev/sda1/
替换
UUID=6fc6605f-796e-4e0b-a8f7-8b339c46b1a9
,这通常是个坏主意。UUID是属于磁盘的唯一id。如果要更换磁盘,我建议尝试使用
blkid
获取UUID

否则,应扩展正则表达式以替换该部分:

$ sed 's/UUID=6fc[^ ]*/\/dev\/sda1/g' fstab

请注意,您已经添加了
6fc
,以确保不会更改每一行
UUID=

那么,什么不起作用?请参阅,您的代码将
UUID
替换为
/dev/sda1
@WiktorStribiżew可能只在行包含
引导时才希望更改UUID
如何在/etc/fstab文件中找到字符串boot并替换UUID
然后,可能是
sed'/\/boot/{s,UUID,/dev/sda1,}'/etc/fstab
,另请参见以避免使用
\/
您要求的内容与已接受的解决方案不相关,因此,我建议在不清楚的情况下结束这个问题。