← Spring コース
3. コマンド行の読み方: $ とコマンドとオプションと引数
コマンド行は、道具の名前と、その道具への指示を1行に並べたものです。このコースの図やサンプルには $ out app.Main のような行が何度も出ます。左から、$(ここからがコマンドだという印で、自分では打ちません)、コマンド(道具の名前)、オプション(- や -- で始まる指示)、引数(対象)の順に読みます。npm run build や node dist/main.js と同じ読み方です。
オプションには値を取るものがあります。-cp out は、-cp が「を探す場所」という指示で、out がその値です。短い形と長い形もあり、-cp と --class-path、 と jar --list --file は同じ意味です。 demo.jar --server.port=8084 のように の名前より後ろに書いたものは、 への指示ではなく、動かすアプリへの引数です。
つまずきやすいのは、同じ文字のオプションが道具ごとに別の意味を持つことです。-v は と では詳しく表示する指示ですが、 では版の表示です。-p は javap では private なものも出す指示で、ant では手順の一覧を出す指示です。意味を決めるのは道具なので、オプションより先に、行の先頭のコマンドを見ます。それぞれの道具が何をするかは、この後のレッスンで扱います。
点線の付いた語はタップすると説明が出ます。用語集を開く →
$プロンプト。ここからがコマンドだという印。自分では打たない
javaコマンド。道具の名前。行の最初の語
Node: node dist/main.js の node続けて、道具への指示を書く
-cp out値を取るオプション。-cp が指示で、out がその値(クラスを探す場所)
-Dwho=Java名前と値を1語に書くオプション(who という設定値を Java にする)
最後に、対象を書く
app.Main引数。java では、動かすクラスの名前
Node: node dist/main.js の dist/main.js(その後ろ)クラス名や JAR 名より後ろは、java ではなく動かすプログラムへの引数。例: java -jar demo.jar --server.port=8084
実行すると、次の行から出力が出る
Hello, Java! sum=5$ の付かない行は、コマンドが出した出力
- ・この行と出力は、JDK 25(Temurin 25.0.4.1)で実行した実物です。-Dwho=Java を外すと、出力は Hello, world! sum=5 でした
- ・どこまでがオプションで、どこからが引数かは、道具ごとの決まりです。java のマニュアルの書式は java [options] mainclass [args ...] と java [options] -jar jarfile [args ...] で、クラス名や JAR 名より後ろに書いたものは、java が読まずに、動かすプログラムの main に渡されます
- ・このコースの後半に出る --server.port=8084 や --debug は、JAR 名やクラス名の後ろに書く、アプリへの引数です。Spring Boot は、-- で始まる引数を設定値として読みます(Spring Boot 4.1 のリファレンス)。java のオプションの -Dserver.port=8085 とは、渡す相手が違います。サンプル集の4本目に並べました
- ・JDK のコマンド(java、javac、jar、javap)では、-- で始まる長い形のオプションは、--file app.jar のように空白で値を続けても、--file=app.jar のように = でつないでも同じです(JDK 25 のマニュアルの注記)。ほかの道具やアプリへの引数にも当てはまるとは限りません
- ・jar tf app.jar の tf は、t(一覧)と f(次にファイル名を書く)の2つを続けて書いた形です。jar のマニュアルは、1文字のオプションを混ぜて書けるとしています。次のレッスンで扱います
- ・java のオプションには種類があります。-cp や -jar のような標準のオプションは、どの JVM の実装でも使えるとされています。-X や -XX で始まるものは HotSpot(OpenJDK の JVM の実装)に固有で、変わりうると java のマニュアルにあります
- ・$、./、|、&&、;、$( )、*、引用符、~ は、Java の決まりではなく、コマンドを打ち込む画面(シェル)の側の書き方です。| は左のコマンドの出力を右のコマンドの入力につなぎ、&& は左が成功したら右を実行します。サンプル集の3本目に、コースに出る形を全部並べました(GNU Bash のマニュアル 5.3 版で確かめた読み方です)
- ・コマンドは終わるときに終了コードという数を返します。0 が成功、0 以外が失敗です。このコースのログの [exit 0] や [exit 1] は、実験用のスクリプトがその数を書き足した行です
- ・./mvnw の ./ は、今いるフォルダにある mvnw というファイルを実行する、という書き方です。java や mvn のように名前だけで打つコマンドは、シェルが決まった場所の一覧(PATH)から探します
- ・Node のコマンド行との対応は、読み方が同じだという意味です。オプションの名前や意味まで同じなのではありません
- ・下のコードは、コマンド行を空白で区切って部品に名前を付ける模型です。値を取るオプションの表を、道具の名前と組にして持っています。実際には、それぞれの道具が自分の決まりで引数を読みます
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Java
図やコードに出てくる用語(タップで説明)
サンプルコードで身につける(5本) →
学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。
公式ドキュメントで詳しく ↗