UUIDの大文字と小文字を簡単に出し分けられるシェルスクリプト
概要
仕事でよくUUIDを生成して使うことが多いので、シュッとUUIDを生成できて大文字小文字を簡単に出し分けられるシェルスクリプトが欲しかったので作りました。 コードはGitHubにも置いてあります。
uuidgenじゃだめなのか
一応、uuidgenコマンドがあるんですがこれにはアルファベットを小文字で出力するようなオプションはなく、常に大文字で出力されます。また、以下のようにコピペして使いたいという時に改行が入ってしまうのが地味に面倒でした。
$ uuidgen | pbcopy # ペーストすると改行が入る $ 783B3460-8D6E-4D4A-9E89-4A7C23D0285E >
これを回避するためにtrコマンドで改行を消したり
$ uuidgen | tr -d '\n'
アルファベットを小文字に変換したりしていました。
$ uuidgen | tr -d '\n' | tr A-Z a-z
さすがに毎回このパイプを書くのは辛いので、シェルスクリプトを書いて一つのコマンドにまとめて、アルファベットはオプションで大文字と小文字を出し分けるようにしました。
uuid4.sh
ぼくはUUIDは小文字で使うことが多いので、デフォルトは小文字で出力して -u
オプションで大文字に切り替えるようにしました。
/usr/local/binにシンボリックリンクを置いています。
# デフォルトは小文字で出力 $ uuid4 dc79fc98-2b2a-447d-84f8-3c045a7c3874 $ uuid4 -u DB217891-D99E-4CDA-8B5F-5F563857A42B
実際に書いたスクリプトです。
#!/bin/bash PROGRAM=$(basename "$0"); readonly PROGRAM function usage() { cat <<EOS Usage: $PROGRAM [OPTION]... -h, --help Display help -u Generate UUID with uppercase EOS } # 引数がない場合は改行を消し、小文字で出力 if [ $# -eq 0 ]; then uuidgen | tr -d '\n' | tr "[:upper:]" "[:lower:]" exit 0 fi for OPT in "$@"; do case $OPT in -h |--help) usage exit 1 ;; -u) # -uオプションの時は改行だけ消して大文字で出力 uuidgen | tr -d '\n' break ;; -*) echo "$PROGRAM: illegal option -- '$(echo $1 | sed 's/^-*//')'">&2 exit 1 ;; esac done
まとめ
これでターミナルでUUIDを生成するのが楽になりそうです。