開発でユニークな識別子が必要な場面が時々あり、そのような場面で Universally Unique Identifier - UUID を使うことが多いです。
tl;dr
uuidgen
に以下のような、エイリアスを設定して、UUID を簡単にペーストできるようにしてます。
alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]" | tr -d "\n" >/dev/stderr | pbcopy'
uuidgen コマンド
macOS には uuidgen
というコマンドがあり、UUID が必要な場面で使っています。
$ uuidgen
B2907FAD-2DCC-49AC-9178-8206876A6175
基本的にはこのように大文字の出力されるのですが、私個人は小文字での表記になれているので、小文字を使いたいところ。また、出力された文字列をいちいち選択してコピーするのも面倒。
エイリアス設定
という訳で、以下のようなエイリアスを設定しています。
alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]" | tr -d "\n" >/dev/stderr | pbcopy'
uuidgen
した内容をパイプで渡しながら、小文字変換したり (tr "[:upper:]" "[:lower:]"
)、末尾改行なくしたり (tr -d "\n"
) して、クリップボードに格納します (pbcopy
) 。
ちょっとだけ工夫したのは、結果を stderr
にも出力するようにしているところ。
alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]" | tr -d "\n" | pbcopy'
でもやりたいことは実現できるのですが、結果がターミナルに表示されなくなり、ペーストするまでどんな UUID が得られたのか分かりません。
なので、 stderr
に出力することもよって結果もターミナル上で確認できるようにしています。
使い方
標準で用意されている uuidgen
を上書きしているので、単に uuidgen
と実行すれば良いだけです。
$ uuidgen
2df3da7d-287b-4301-ad0f-b07607f01b4b
ちなみに私個人は .zshrc
で
setopt magic_equal_subst
を指定しているので、 =uuidgen
で元の uuidgen
を実行できるようにしています。
$ =uuidgen
E34C966D-7BF1-4CBD-B989-C638302104F3
追記 2021.11.22
zsh / bash なら tee
コマンドを使っても同様のことができるようです。
alias uuidgen='uuidgen | tr "[:upper:]" "[:lower:]" | tr -d "\n" | tee >(pbcopy)'
stderr
に余計な出力しないので、こちらの方がよいかもしれません。
追記
- macOS Monterey 12.0.1 で動作確認しました。
- linux では
pbcopy
コマンドありませんが、似たようなことは可能みたいです。 - windows の場合、私ならおそらく WSL 使います。