コマンドラインオプションに短い選択肢と長い選択肢があるのはなぜですか?


23

ほとんどのunixoidコマンドは、ls -aand ls --all、orのようなコマンドラインオプションの短い選択肢と長い選択肢を特徴ls -Aとしていls --almost-allます。なぜこれらの2つの方法が存在するのですか?1つは入力が短く、もう1つは読みやすく、理解しやすいです。しかし、シェルスクリプトを作成するたびに、どちらを使用するかを決定する必要があります。2つの選択肢が存在する理由はわかっていますか?どちらが最初で、もう一方が導入されたのはなぜですか。たとえば、DOS / Windowsでは、大文字と小文字を区別しない1文字のオプションしかほとんどありません。

回答:


24

もともとは単一文字のオプションしかありませんでした。一部のプログラムは複数文字のオプションを使用しましたが、ダッシュは1つしかありませんでした。AFAIKの二重ダッシュの複数文字オプションはGNUから来ています。それらはより読みやすく、多くの場合より記憶に残るために導入されました(そして、52個以上持つことができます)。現在、多くのプログラムには両方があります。コマンドラインで入力して文字を覚えるときの短いオプション、スクリプトの長いオプション、長いオプション名だけを覚えている場合のコマンドライン。


15
+1は、長いオプションがスクリプトに適していることを言及したためです。なぜなら、それらは物事を文書化するのに役立つからです
ノーマングレイ

5
「のみ52彼らの」について:試してみてくださいls -BartSimpsonIsJustCool(またはGreat、あなたは、Solarisにしている場合。
アーロンDigulla

1
@AaronDigullaこれはイースターエッグですか?
user712092

5
@ user712092いいえ、それはトリックです。Linuxでは、その後のすべてI-Iオプションの引数であるためsJustCool、現在のディレクトリで呼び出されるファイルがある場合にのみ違いが生じます。-BartSimpson一部には、ことを除いて、並べ替えることができますS(ソートサイズによるが)後に滞在しているt(日付でソート)。また、m何の効果がないnか、o存在しているが。したがって、このコマンドはと同等ls -BSainopsrです。何かを見逃していない場合、同じ出力を得るために別の文字を削除することはできず、これらの文字を自由に並べ替えることができます。
ジル「SO-悪であるのをやめる」

2
@Gilles:ところで、可能な限り正確にするために、52ではなく62の異なる短いオプション(数字を含む)がありgzip -9 filenameます。
ラドコディネフ14

1

あなたはそれが好みの問題だと思うかもしれません。特にrun-together-options(例ls -AL)の場合、コマンドラインで入力するとき、短いオプションが好まれるかもしれません。長いオプションは意図を伝えるのに優れているため、を読むときにマニュアルページを参照する必要はありませんls --almost-all --dereference

当然、経験を積むにつれて、両方のオプション-A-L短いオプションの両方が十分によく知られており、この追加のドキュメントを必要としないことを学ぶかもしれません。特に、評価、リダイレクトなど、興味深い方法でいくつかのコマンドを組み合わせることができる複雑なコマンドの場合。そのような場合、ドキュメントよりも簡潔さを好むかもしれません。


1

パラメーターを指定するさまざまな方法(短いものと長いもの)があることでわかるもう1つの目的は、入力時にUnix / Linuxコマンドラインのユーザーができるだけ短いコマンドを使用することです。ただし、それらは不可解になる可能性があり、スクリプトがこれらの短いバージョンを使用して記述されている場合、将来的に理解しにくくなる可能性があります。長いバージョンを使用すると、特にこのコマンドが実際によく知られているコマンドとは対照的にローカルで記述されたスクリプトである場合、このコマンド第一人者ではない人がSAMEコマンドをより読みやすく理解しやすくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.