Get UUID of / filesystem from script

Use findmnt:

$ findmnt /        
TARGET SOURCE       FSTYPE OPTIONS
/      /dev/md127p1 ext4   rw,relatime,stripe=256,data=ordered
$ findmnt / -o UUID
UUID
046a554b-d9f5-4b23-82e6-ffaeb98284aa
$ findmnt / -o UUID -n
046a554b-d9f5-4b23-82e6-ffaeb98284aa

It also has several options to control how it looks up information, and how it presents it (including JSON output!). It's part of the mount package, so available on any Ubuntu installation.


Another solution:

lsblk -nr -o UUID,MOUNTPOINT | grep -Po '.*(?= /$)'
  • -n suppresses the header (not really needed, but safer for parsing)
  • -r makes raw output (makes it safer to parse)
  • -o UUID,MOUNTPOINT include only necessary information

You can use the lsblk command to output the UUID, but you need the device name of the partition (such as /dev/sda2). You can get this by using the df command and trimming the output. Use command substitution to give the device name to lsblk. It appears you need sudo to access the UUID, although the normal output of lsblk does not require it:

sudo lsblk -n -o UUID "$(df -P / | tail -n1 | cut -d' ' -f1)"