エンジニアログ -4ページ目

エンジニアログ

主に業務でつまづいた内容をメインに解決策を書いています。
その他、趣味について色々書いています。

シェルスクリプトを勉強していると時間が経つにつれて書き方を忘れてしまうことがあります。

エンジニアは何も全部のコードを覚えているわけではありません。

 

現場に必要な言語ごとに復習しています。

こんな時にサンプルがあると便利です。

 

今回は、スクリプトのサンプルを書いています。

プライベートPCがMACなのでMAC用のターミナルで操作しています。

 

復習の際に確認いただければ助かります。

まずは、ターミナルを開きます。MACはターミナルをインストールせず使いやす状態にあるので便利です。

 

デスクトップに作業用フォルダを作成します。

cd /Desktop

mkdir work

 

次に移動します。

cd ./work

フォルダがないことを確認します。

ls

touchコマンドでファイルを作成します。

touch test.sh

lsで中身を確認します。

その際に、作成した、tesh.shがあればOKです。

次に権限を付与します。

作成しただけだと、うまく実行されずにエラーになります。

chmod +x test.sh

 

権限付与までできたら、本格的な作成に取り掛かります。

①超簡単リアルタイム表示をするスクリプト

ここでやっていることはリアルタイムで1秒ごとに分まで表示してくださいを書いています。

 

#!/bin/zsh

#---------------------------------------------------------

#概要:時刻を年月日でリアルタイム表示するスクリプト

#作成者:テスト

#作成日:2026/09/01

#更新者:

#更新日:

#版数:1.0

#---------------------------------------------------------

 

# 終了(Ctrl+C)が押されたら、画面をクリアして終了する仕掛け

trap 'clear; exit 0' INT

 

# 最初に見栄えを良くするため画面をクリア

clear

 

# ずっと繰り返す(無限ループ)

while true

do

# 画面の表示位置を左上(ホームポジション)に固定する

printf "\033[H"

# 曜日を日本語(月、火…)にする設定付きで、年月日と曜日を取得

TODAY=$(LC_TIME=ja_JP.UTF-8 date '+%Y年%m月%d日(%a)')

 

# 日付と時刻を表示する

echo "------------------------------"

echo "現在の日付: ${TODAY}"

echo "現在の時刻: $(date '+%H:%M:%S')"

echo "------------------------------"

echo "※ 終了するには [Ctrl + C] を押してください"

# 1秒待つ

sleep 1

done

実行結果は以下のようになります。

 

②次は、キーボードで分数を設定したら、カウントダウンが始まるタイマーをスクリプトで作ってみました。

ラーメンの待ち時間の確認などに最適ですね!

#!/bin/zsh

 

# 終了(Ctrl+C)が押されたら、画面をクリアして終了する

trap 'clear; exit 0' INT

 

# 画面を一度クリア

clear

 

# キーボードから分数入力を受け付けるあ

read MINUTES

 

# 入力された値を合計の「秒」に変換する

TOTAL_SECONDS=$(( MINUTES * 60 ))

 

# カウントダウン開始前に画面をクリア

clear

 

# 残り秒数が0になるまで繰り返す

while [ $TOTAL_SECONDS -gt 0 ]

do

# 画面の表示位置を左上に固定

printf "\033[H"

# 残りの「分」と「秒」を計算する

M=$(( TOTAL_SECONDS / 60 ))

S=$(( TOTAL_SECONDS % 60 ))

# 画面に表示する

printf "残り時間: %02d分%02d秒\n" $M $S

echo "----------------------"

echo "※ 中止するには [Ctrl + C] を押してください"

# 1秒待って、残り秒数を1減らす

sleep 1

TOTAL_SECONDS=$(( TOTAL_SECONDS - 1 ))

done

 

# タイマー終了時の処理

clear

echo "${MINUTES}分が経過しました!"

 

実行結果

分数設定画面

開始中メッセージ

完了メッセージ

本格的になってきました!

動的が作れるようになると楽しいです。

 

ちなみにMacのエビデンスの取り方は、

⇧キー+Command+4です。

 

必ず完了したら、exitで抜けておきましょう。

 

なお、環境は、Windows用でも動作しますが、「#!/bin/zsh」の宣言が違っていたり、時計の取得の構文も異なりますので、ネットで調べながら、書いていくとレベルアップしていきます。

 

シェルは業務用だけなく、私的にも便利に快適化することができるのでいろいろ試してみてください。