0
Help us understand the problem. What are the problem?
Organization

uuidgen コマンドをちょっとだけ便利にする

開発でユニークな識別子が必要な場面が時々あり、そのような場面で 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 に余計な出力しないので、こちらの方がよいかもしれません。

参考 : コマンドの結果を画面とパイプの両方に渡す方法

追記

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?