Diary

Diary

日々学んだことをアウトプットする場として初めてみました

正規表現でキャメルケースをスネークケースにする

ユースケース

HogeFuga → hogeFuga みたいな『先頭のみの大文字小文字を変換する』ということがしたいケースがありました。

同じ要領で『キャメルケース → スネークケース(逆も)』ができたのでその紹介です。

(注: 以下コマンドの結果はすべて GNU sed によるものです。)

まとめ

# キャメルケース → スネークケース
$ echo HogeFuga | gsed 's@[A-Z]@_\L&@g' | gsed 's/^_//'
hoge_fuga

# スネークケース → キャメルケース
$ echo hoge_fuga_pien | gsed -E 's@_(.)@\U\1@g'
hogeFugaPien
$ echo hoge_fuga_pien | gsed -E 's@_(.)@\U\1@g' | gsed 's@^.@\U&@'
HogeFugaPien
続きを読む

systemd で定期実行する

『systemd で定期実行をする』というよくある内容ですが、設定できたつもりになってた自分自身の反省を兼ねてメモしておきます。 (細かい設定方法については説明しません。)

systemd などのタスク系に関しては、うまく動いてるかの確認がより大事になってきます。

[目次]

続きを読む

go で init 関数などが初期化される順番の整理

go で初期化処理を書くために init 関数を使っている方もいるかと思うのですが、呼び出される順番を 1 回正しく整理しておきたいと思います。

[目次]

続きを読む

terminal で alias の定義場所を探す

ターミナルで作業をする時、alias 等を使い極力文字数を減らして打ち間違いを防ぐ事が多いかと思います。

しかし oh-my-zsh などのツールによって設定された値など、たまに「あれ?これどこで定義された alias だっけ?」ってなる事があります。

そんな時は以下のようなパワープレイが有効かもしれません。

Bash

bash -ixlc : 2>&1 | grep alias_name

Zsh

zsh -ixc : 2>&1 | grep alias_name

なんとなくやってることの説明

alias はシェルの様々なプロセスで設定されうるため、シェルを新規で立ち上げています。

  • -i インタラクティブモードで
  • -x デバッグ情報の出力を ON にする
    • XTRACE mode
  • -c 続くコマンドを実行
  • 何もしないコマンド : を実行
    • シェルの初期化時に読み込まれる設定や alias のみを与える
  • 2>&1 標準エラー出力の内容を標準出力に繋げる
# オプションはこの辺が参考になるかも
man zshoptions | grep '\-x' -A5

実行結果

# 環境
$ zsh --version
zsh 5.8.1 (x86_64-apple-darwin22.0)

# gf は ~/.oh-my-zsh/plugins/git/git.plugin.zsh:215 で定義されてる事がわかる
$ zsh -ixc : 2>&1 | grep gf=
+/Users/kokoichi/.oh-my-zsh/plugins/git/git.plugin.zsh:215> alias 'gf=git fetch'
+/Users/kokoichi/.oh-my-zsh/plugins/git/git.plugin.zsh:292> compdef _git 'ggf=git-checkout'
+compdef:132> [[ 'ggf=git-checkout' = -N ]]
+compdef:134> [[ 'ggf=git-checkout' = -p ]]
+compdef:136> [[ 'ggf=git-checkout' = -P ]]
+compdef:155> [[ 'ggf=git-checkout' = *=* ]]

bash でシェルオプションを確認・変更する

『現在のシェルセッションにおける変数と関数の一覧を表示』するには set コマンドに何もつけずに叩きます。

# 240 行もあり。
$ set | wc -l
242

# PATH だけを出力。
set | grep PATH

シェルオプションの現在の状態を表示するには o オプションをつけて叩きます。

$ set -o
noaliases             off
aliasfuncdef          off
allexport             off
noalwayslastprompt    off
alwaystoend           on
appendcreate          off
noappendhistory       off
...

オプションを変更する方法

-o で off に、+o で on にすることができます。

$ set -o | grep errexit
errexit               off

# on にする。
$ set -o errexit
$ set -o | grep errexit
errexit               on

# off にする。
$ set +o errexit      
$ set -o | grep errexit
errexit               off

また、ショートオプションとして用意されてるものもあります。

# set -o errexit と同じ。
$ set -e
$ set -o | grep errexit
errexit               on

# set +o errexit と同じ。
$ set +e
$ set -o | grep errexit
errexit               off

詳しくは man bash 4.3.1 The Set Builtin をご覧ください。