hene

hene.dev

標準出力の結果を変数に入れると色がつかない

標準出力に色がつかない

commit した日時を変更 - hene.dev で、echo を挟むと標準出力に色がつかないことに気づいた。

git status

$ git status
On branch feature/git_status
Your branch and 'origin/main' have diverged,
and have 8 and 2 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        zsh/.my_functions/.git_status.zshrc

nothing added to commit but untracked files present (use "git add" to track)

色がつく

$ git status と同じ。

declare -r TEST_CMD='git status'
echo "$ $TEST_CMD"
eval $TEST_CMD

_git_status_colored

色がつかない

echo を挟むと、色がつかない。

declare -r TEST_CMD='git status'
echo "$ $TEST_CMD"
echo "$(eval $TEST_CMD)"

_git_status_not_colored

まとめ

$ git status では、エスケープシーケンス を表示していた。 echo を挟むと、エスケープ文字が解釈されず色がつかなかった。

コンピューターのプリンターやディスプレーなどの周辺機器を制御したり、テキストの文字属性を変更するときに用いられる特殊な文字列。

「エスケープシーケンス」の意味や使い方 わかりやすく解説 Weblio 辞書

参考

関連記事