`dd`が引数に `=`を使用するのはなぜですか?

`dd`が引数に `=`を使用するのはなぜですか?

ddこのようなより一般的なアプローチの代わりに()でパラメータを使用するのはなぜですか?=if=/dev/zero-i /dev/zero

このスタイルの歴史的な理由や長所と短所を知っている人がいるかどうか疑問に思います。

ストーリータイム:私がソフトウェア開発を始めたとき、私が何をしているのかわからなかったので、このddスタイルを使用しました。 C#ライブラリに実装する方が簡単だからです。(ほとんどの開発者のように、私はまだ何も知りません。Google、StackOverlow、およびコピーペーストの使い方だけを知っています。)

ベストアンサー1

POSIX以下は基礎セクションで言及されていますdd

もちろん、ユーティリティ構文ガイドラインを使用するように多くのオペランドを設計することができ、これは古典的なハイフンオプション文字を生成します。このボリュームPOSIX.1-2017のこのバージョンでは、DD多数のアプリケーションが過去の実装に依存しているため、JCLと同様の奇妙な構文が維持されます。

JCLへの参照は、以下の説明を反映しています。専門用語ファイル(項目では「dd」を動詞として説明しますが、この参照はddユーティリティに関するものです。)1:

Unix dd(1)は、IBM System / 360 JCL(I / Oデバイス仕様の洗練されたDD「データセット定義」があります)を思わせる奇妙で確かにUnixy以外のキーワードオプション構文で設計されています。

故デニスリッチ書いた

dd は常に JCL dd カードにちなんで命名されます。

このスレッドには例が含まれています。JCLデータ定義:

//JOB SMILEY
//EXEC CCLG
//SYSPARM DD DSN=USR.LOCAL.INCLUDE.STDIO,DISP=SHR
//SYSIN DD *
MAIN()
{
PRINTF("HELLO, WORLD\N");
}
/*
//

また、見ることができますダッシュオプションに関するこのTUHSスレッドどこAndrew WarkentinはJCLkey=valueスタイルのオプションを引用しました。

長所と短所の点では、ddスタイルオプションには一般的なダッシュスタイルに比べて大きな利点があります。つまり、すべてのプログラムパラメータが明示的です。ダッシュプレフィックスを混在させるオプションやファイル名などの「従来の」コマンドrm。 Unixスタイルのシステムでは、ファイル名がダッシュで始まる可能性があるため、指定された引数がオプションであるかファイルであるかを常に確認することはできません。この問題は解決できますが、ddスタイルオプションを使用すると問題を完全に回避できます。 (面白くするために、GNUはスタイルではなくオプションもサポートしていますdd。)dd--help--version


1 この専門用語ファイル項目の全体的な精度物議を醸すしかし、JCL接続はそうではありません。

おすすめ記事