Я запускаю live linux, который запускается с флэш-диска FAT32, так как я запускаю много компьютеров, используя этот флэш-диск, трудно определить, какой IP-адрес для его имени хоста, поскольку его IP-адрес должен динамически определяться dhcp, поэтому я хочу установить их имя хоста по метке тома, установленной на его флэш-диске
я могу использовать 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"
но как разобрать его метку и установить мое имя хоста при загрузке?
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]}"