#!/bin/bash # A pseudorandom password generator LEN=16 # default length SYMBOLS=true gen_psw() { local len=$1 local symbols=$2 local charset="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" [[ $symbols == true ]] && charset="${charset}!@#$%^&*()_+{}|:<>?" psw=$(< /dev/urandom tr -dc "$charset" | head -c "$len") echo "$psw" } while [[ "$#" -gt 0 ]]; do case $1 in -l|--length) LEN="$2"; shift ;; -ns|--no-symbols) SYMBOLS=false ;; *) echo "Unknown flag: $1"; exit 1 ;; esac shift done PASSWORD=$(gen_psw "$LEN" "$SYMBOLS") echo "$PASSWORD" if command -v xclip &> /dev/null; then echo -n "$PASSWORD" | xclip -selection clipboard printf '%s\n' "Password has been copied." | dzen2 -p 1 -bg white -fg black -x -305 -y 50 -w 455 -h 50 fi