我正在运行 live linux,它从 FAT32 闪存盘运行,因为我用这个闪存盘运行了很多电脑,很难识别它的主机名的 IP,因为它的 ip 需要由 dhcp 动态确定,所以我想通过在其 flasdisk 上设置的卷标来设置它们的主机名
我可以使用blkid | grep sda1
或blkid | grep "vfat"
结果是
#blkid | grep sda1
/dev/sda1: LABEL="SLAX" UUID="FAEB-513E" TYPE="vfat"
#blkid | grep "vfat"
/dev/sda1: LABEL="SLAX" UUID="FAEB-513E" TYPE="vfat"
但是如何在启动时解析其标签并将其设置为我的主机名?
答案1
hostname $(blkid | perl -lne '/LABEL="(.*?)".*vfat/ and print $1')
或者
hostname $(blkid | perl -lne '/sda1.*LABEL="(.*?)"/ and print $1')
由于您没有 Perl,因此您grep
可能没有-P
。如果有,请尝试
hostname $(blkid | grep -Po 'LABEL="\K.*?(?=".*vfat)')
或者
hostname $(blkid | grep -Po 'sda1: LABEL="\K.*?(?=".*)')
对于纯 Bash 版本:
pattern='sda1.*LABEL="([^"]+)"' # or: pattern='LABEL="([^"]+)".*vfat'
[[ $(sudo blkid) =~ $pattern ]]
hostname "${BASH_REMATCH[1]}"