Generate UUIDs in Bash

Resources  |  Generate UUIDs in Bash

Generating a UUID in a Bash script can be done using various tools available on most Unix-like systems. The uuidgen command is the most straightforward tool to use for this purpose.

Using uuidgen

The uuidgen command is a part of the util-linux package and is available by default on most Linux distributions. Here's how you can use it to generate a UUID:

#!/bin/bash

# Generate a new UUID
uuid=$(uuidgen)

# Output the generated UUID
echo "Generated UUID: $uuid"

Running the Script

  1. Save the script above to a file, for example, generate_uuid.sh.
  2. Make the script executable:
    chmod +x generate_uuid.sh
    
  3. Run the script:
    ./generate_uuid.sh
    

Output Example

When you run the script, you should see an output similar to:

Generated UUID: 123e4567-e89b-12d3-a456-426614174000

Each time you run the script, a different UUID will be generated.

Using /proc/sys/kernel/random/uuid

If uuidgen is not available, you can also read from /proc/sys/kernel/random/uuid to generate a UUID:

#!/bin/bash

# Generate a new UUID
uuid=$(cat /proc/sys/kernel/random/uuid)

# Output the generated UUID
echo "Generated UUID: $uuid"

Using openssl

If you have openssl installed, you can generate a UUID using the following method:

#!/bin/bash

# Generate a new UUID using openssl
uuid=$(openssl rand -hex 16 | sed 's/\(.\{8\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.\{12\}\)/\1-\2-\3-\4-\5/')

# Output the generated UUID
echo "Generated UUID: $uuid"

Using Python

If you have Python installed, you can call a Python script from your Bash script to generate a UUID:

#!/bin/bash

# Generate a new UUID using Python
uuid=$(python3 -c 'import uuid; print(uuid.uuid4())')

# Output the generated UUID
echo "Generated UUID: $uuid"

Summary

Here are the different methods summarized:

  1. Using uuidgen:

    uuid=$(uuidgen)
    
  2. Using /proc/sys/kernel/random/uuid:

    uuid=$(cat /proc/sys/kernel/random/uuid)
    
  3. Using openssl:

    uuid=$(openssl rand -hex 16 | sed 's/\(.\{8\}\)\(.\{4\}\)\(.\{4\}\)\(.\{4\}\)\(.\{12\}\)/\1-\2-\3-\4-\5/')
    
  4. Using Python:

    uuid=$(python3 -c 'import uuid; print(uuid.uuid4())')
    

Choose the method that best suits your environment and dependencies.