コマンドライン引数(コマンドラインひきすう)は、プログラムを実行する際にオプションや動作モードを指定したり、処理対象のデータを渡すために使われる重要な機能です。この記事では、コマンドライン引数の基本的な仕組みから、実際の使い方までを分かりやすく解説します。
1. コマンドライン引数とは?
コマンドライン引数は、ユーザーがプログラムを実行する際に追加情報を渡すための仕組みです。例えば、以下のように使われます。
python script.py --input data.txt --output result.csv
この例では、--input
と --output
がコマンドライン引数で、それぞれ data.txt
と result.csv
という値を指定しています。
2. コマンドライン引数の基本的な形式
コマンドライン引数は、一般的に以下のように記述されます。
・プログラム名の後にスペースを挟んで指定
command arg1 arg2 arg3
・複数の引数を指定する場合
gcc -o program main.c utils.c
この例では、-o program
がコンパイラへのオプションで、main.c
と utils.c
が処理対象のファイルです。
3. 主要OSでのコマンドライン引数の違い
コマンドライン引数の指定方法は、OSによって異なる場合があります。
(1)Unix/Linux/macOS(ハイフンを使う)
ls -l grep -i "search_term" file.txt
-
-l
や-i
のように、ハイフン (-
) に続けてオプションを指定します。
(2)Windows(スラッシュを使う)
dir /w copy /y source.txt destination.txt
-
Windowsでは、スラッシュ (
/
) でオプションを指定するのが一般的です。
(3)移植されたコマンドの例
-
grep
がWindows(PowerShellやWSL)で使われる場合、-i
のようにUnix形式のオプションがそのまま使われます。
4. プログラミング言語ごとのコマンドライン引数の取得方法
プログラム内でコマンドライン引数を利用する場合、言語ごとに異なる方法で取得します。
(1)Pythonの場合
import sys # コマンドライン引数を取得 args = sys.argv print("引数一覧:", args)
実行例:
python script.py arg1 arg2
出力:
引数一覧: ['script.py', 'arg1', 'arg2']
(2)C言語の場合
#include <stdio.h> int main(int argc, char *argv[]) { printf("引数の数: %d\n", argc); for (int i = 0; i < argc; i++) { printf("引数 %d: %s\n", i, argv[i]); } return 0; }
実行例:
./program arg1 arg2
出力:
引数の数: 3 引数 0: ./program 引数 1: arg1 引数 2: arg2
(3)JavaScript(Node.js)の場合
const args = process.argv; console.log("引数一覧:", args);
実行例: bash
node script.js arg1 arg2
出力: 引数一覧: [‘/path/to/node’, ‘/path/to/script.js’, ‘arg1’, ‘arg2’]
5. コマンドライン引数の活用例
(1)ファイル処理ツール
python convert.py --input data.csv --output result.json --format json
-
--input
で入力ファイル、--output
で出力ファイル、--format
で出力形式を指定。
(2)サーバー起動オプション
node server.js --port 3000 --debug
-
--port
でポート番号、--debug
でデバッグモードを有効化。
(3)バッチ処理の自動化
bash backup.sh /path/to/source /path/to/destination --compress
-
バックアップスクリプトでソースと保存先を指定し、
--compress
で圧縮オプションを適用。
6. まとめ
コマンドライン引数は、プログラムの動作を柔軟に制御するための強力な機能です。OSやプログラミング言語によって形式が異なる場合がありますが、基本的な使い方を理解すれば、効率的な自動化やスクリプト作成が可能になります。ぜひ実際に試してみて、コマンドライン操作の効率化に役立ててください!