LoginSignup
2
0

More than 1 year has passed since last update.

「1日にターミナルで入力した文字数」を可視化するコマンドを作ってみた

Last updated at Posted at 2022-12-06

新卒エンジニアによる全部俺カレンダー2022 7日目投稿記事です。

概要

「1日にどのくらいターミナルでコマンド入力作業をしているんだろう・・」とふと可視化してみたくなったので、シェルスクリプトを書いてみました。

前提

  • ターミナルはiTerm2を使用
  • 任意のディレクトリに日付をprefixとしたターミナルの入力ログが保存されている。
    • 例: 20221020_140806.XXXX-XXXX-XXXX.log

コード

シェルファイルを作成
touch count_log.sh

count_log.sh
USER_NAME=hoge@fuga # ターミナル画面の左端に表示されるユーザー名をここで指定してあげます。
DATE=$@ # 日付のprefixを引数にする
COUNT=`cat $DATE*.log | grep $USER_NAME | sed 's/.*\%//' | wc -m # ユーザー名でgrepして入力コマンド部分をフィルターする
echo $DATE $COUNT # 日付と文字数を出力

たった4行コードを書くだけです。

COUNT=`cat $DATE*.log | grep $USER_NAME | sed 's/.*\%//' | wc -m

ターミナルのログから入力したコマンドの総文字数を計算するのには4つのコマンドをパイプさせます。

cat ログファイルの内容を出力する
grep $USER_NAMEが含まれる行のみを出力する
sed 指定した正規表現に従って、出力結果をフィルターする
wc -m 文字数をカウントする

sedについてちょっと詳しく

sed 's/.*\%//'

上記のコマンドで指定した正規表現では、ログの出力結果から[ユーザー名] [ディレクトリ]%の部分をフィルターします。

hoge@fuga ~ % cd ~/hoge/fuga
↓
cd ~/hoge/fuga

注意点

[ユーザー名] [ディレクトリ]%の記号部分は環境によって異なるので、適宜正規表現を変えてください

  • zsh (%)
    • sed 's/.*\%//'
  • bash ($)
    • sed 's/.*\$//'
  • rootユーザー (#)
    • sed 's/.*\#//'

実行してみる

2022年12月1日のログからコマンド入力文字数を出力してみます。

sh count_log.sh 20221201

20221201 1523

結果が出ました〜

参考資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0