WSL開発環境: whatコマンドによるスクリプト管理
はじめに
スクリプトの管理に役立つwhat
コマンドの使い方を紹介します。
what
コマンドは、whatdoc
コメントという特定のフォーマットのコメントをもとに、スクリプトのバージョンや説明を出力します。
what
コマンドとwhatdoc
コメントを活用することで、スクリプトの理解が容易になります。
キーワード
以下で、使用する重要なキーワードを説明します。
-
what
コマンド:
ファイルのメタデータ (バージョン、説明など)を出力するコマンド。メタデータは、ファイル内のwhatdoc
コメントで記述される。 -
whatdoc
コメント:
スクリプト内に記述される特定のフォーマットのコメント。メタデータ (バージョン・作成日・説明など) の提供に利用される。 -
SCCS
(Source Code Control System
):
旧来の UNIX系OS で使われていたバージョン管理システム。what
コマンドの起源となっている。 -
メタデータ:
スクリプト、設定ファイルのバージョンや説明などを指す。 -
シェルスクリプト:
コマンドラインで実行するスクリプト言語であり、Unix/Linux系OS で広く利用される。
what
コマンドの概要
1. what
コマンドは、シェルスクリプトや設定ファイルのメタデータ (バージョン、説明など) を出力するコマンドです。
whatdoc
コメントという特定のフォーマットで書かれたコメントをもとに、スクリプトのバージョンや説明を出力します。
注意
whatdoc
コメントに関しては、4. whatdoc
コメントの基本を参照してください。
what
コマンドのインストール方法
2. WSL上の Debian にwhat
コマンドをインストールする方法を説明します。
what
コマンドのインストール手順
2.1 what
コマンドは、次の手順でインストールします:
-
what
コマンドのダウンロード
下記のコマンドを実行して、what コマンドをダウンロードする。wget https://raw.githubusercontent.com/atsushifx/agla-shell-utils/main/agla/what
-
what
コマンドのインストール
ダウンロードしたwhat
コマンドをpath
の通ったディレクトリにコピーする。sudo cp what /opt/bin
-
実行権限の追加:
コピーしたwhat
コマンドに実行権限を追加する。sudo chmod +x /opt/bin/what
以上で、what
コマンドが使えるようになります。
what
コマンド の基本機能
3. what
コマンドは、指定したファイルに関するメタデータ (バージョン、説明など) を出力します。
このセクションでは、what
コマンドの使用方法を説明します。
what
コマンドの基本操作
3.1 what
コマンドの基本的な使い方は以下のとおりです。
what <ファイル名>
で、指定したファイルのバージョンと 1行説明を出力します。
下記のようなwhatdoc
コメントがファイルの場合では、
#!/usr/bin/env bash
#
# @(#) : Sample script to demonstrate whatdoc
# 注意: このスクリプトは`whatdoc`のデモンストレーションです
#
# @version 1.0.0
#
what
コマンドの実行結果は、次のようになります。
$ what sample.sh
sample.sh: (v 1.0.0) : Sample script to demonstrate whatdoc
このように、シェルスクリプトに関する情報を簡単に得ることができます。
what
コマンドの応用操作
3.2 '-d'オプションで、スクリプトの詳細な説明を表示します。
これにより、より深い理解が可能になります。
このときのコマンドは:
what -d <ファイル名>
となります。
what コマンドの場合は:
$ what -d what
what <file>
print shell script usage
-d print usage created by header
-v print version
-h -? print this usage
THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND.
THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER.
となります。
whatdoc
コメントの基本
4. what
コマンドでコマンドの説明を出力するには、ファイル内に適切なwhatdoc
コメントを追加する必要があります。
whatdoc
コメントを適切に使用することで、スクリプトの目的、使用方法などが簡単に把握できます。
これにより、スクリプトのメンテナンスが格段に容易になります。
whatdoc
コメントの基本フォーマット
4.1 whatdoc コメントは、以下のようなフォーマットで記述します:
#!/usr/bin/env bash
#
# @(#) : display shell script usage
#
# @version 1.0.0
# @author Furukawa Atsushi <atsushifx@aglabo.com>
# @date 2023-12-27
# @license MIT
#
# @desc
#
# what <file>
# print shell script usage
#
# -d print usage created by header
# -v print version
# -h -? print this usage
#
#
###
#
# THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND.
# THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER.
#
#
注意事情:
whatdoc コメントはヘッダー部に記述します。shebang
のあとに#
コメントを続ける必要があります。
whatdoc コメントは、@(#)
からはじまります。
@(#)
は、SCCS
という UNIX系OS で使われてたバージョン管理システム用のヘッダーです。
ここから、ヘッダーコメントの最終行までが whatdoc コメントになります。
whatdoc
コメントのヘッダー (short desc
)
4.2 @(#)
ではじまるコメントは、コマンドの簡単な説明となります。
what <ファイル名>
で出力される説明は、ここのコメントとなります。
4.3 コメントタグの一覧
whatdoc コメントでは、@
から始まるキーワードをコメントタグとして認識します。
現在、what コマンドでは@version
しか使っていません。
シェルスクリプトの管理のためには、@author
などのほかのタグも書いておくといいでしょう。
コメントタグの一覧を下記に載せておきます:
コメントタグ | 記法 | 説明 | 備考 |
---|---|---|---|
@(#) | @(#) : <短い説明> | シェルスクリプトの簡単な説明 |
what コマンドで、スクリプトの簡単な説明として利用される |
@version | @version <バージョン番号> | バージョン番号をセマンティックバージョニングで記述する | what の short descにバージョン番号を出力 |
@author | @author <氏名> | スクリプトの作成者を記述 | |
@date | @date <日時> | スクリプトの作成日時を記述 | |
@license | @license <ライセンス> | スクリプトのライセンスを略号で記述 | |
@desc | @desc ... | スクリプトの長い説明を複数行のコメントで記述 | 詳細は、後述 |
long desc
の使用 )
4.4 @descタグ (@desc
タグは特殊で、複数行に渡ってコメントを記述します。
@desc
タグ以降の、行頭に#
をつけたコメントをヒアドキュメントとして認識し、残りのヘッダコメント
が@desc
タグによるドキュメントとなります。
# @author Furukawa, Atsushi <atsushifx@aglabo.com>
# @date 2023-12-27
# @license MIT
#
# @desc
+-#
| # what <file>
| # print shell script usage
| #
+-##
.
.
<以下、shellscript本文>
上記の、+
... +
の行が、long desc
です。
注意:
@desc
タグは、whatdoc コメントの最後につける必要があります。
おわりに
この記事では、what
コマンドの使い方と、コマンドを使うためのコメントの書き方を紹介しました。
各種スクリプトや、bashrc
などの設定ファイルにwhatdoc
コメントを記述すると、理解が容易になります。
この記事を活用して、あなたの Linux 環境のスクリプトや設定ファイルを効率的に管理しましょう。
それでは、Happy Hacking!
Discussion