良い習慣として、コマンド内のフラグをアルファベット順に並べるべきですか?


回答:


15

コマンドが明示的に言及しない限り、それは実際に重要ではありません*。私は、オプションを次々と配置する方法のガイドラインのようなものを与えた参考文献に出くわしていません。そのため、読みやすくするために、オプションをアルファベット順に並べることができると思います。

*非常に重要なキャベツがあります。これは、オプションにファイル名またはその他の入力が必要な場合に、それに応じてそれを配置する必要がある場合です。

たとえば、の-fオプションはgrep、入力ファイルから検索するパターンを取得するための入力としてファイルを取得します。次のようにコマンドを指定する必要があります。

grep -cf input.txt file.txt 

次のように使用する場合:

grep -fc input.txt file.txt 

cファイル名として使用するため失敗します。


12

POSIXの規則はで定義ガイドライン11およびユーティリティの構文ガイドラインの12「順序という問題ではないはず」しない限り、それは、ユーティリティ自身のために文書化されていません。

GNU Cライブラリリファレンス・マニュアルも優等でそれらのPOSIX規則25.1.1プログラムの引数の構文規則

ただし、状況によっては、パラメータの実行方法を厳密に指定するユーティリティ(findなど)がいくつかあります。検索マンページから:

-nameテストでは、前に来て-typeコールするのを避けるために、テストstat(2)のすべてのファイルに。

ユーティリティが注文について文句を言うことがあります。


3
厳密に言えば、findいくつかのオプションのみがあり、POSIXは2つのオプション-Hとのみを定義します-LfindUbuntu のGNU にはさらにいくつかのオプションが-typeありますが、-nameなどはオプションではなく演算子と見なされます。そして、オペレーターにとっては、通常順序が重要です。
ガイラ

5

lsを使用すると、オプションの順序を間違えることはほとんどありません。

ただし、他のコマンドは順序によってオプションに対する応答が異なる可能性があることに注意してください。

例は、findコマンドです。たとえば、次のような異なる結果が得られます。

  find . -ls -mtime -1 

そして

  find . -mtime -1 -ls

3

練習したいのが、おそらく短い文字列をアルファベット順に並べる場合です。言葉を作る(タイプミスを減らす)と文を作る(理解を深める)という2つの戦略が有用だと思います。

たとえばlsの場合、ls -halF大文字を使用したとしても、Falhのような単語ではないものよりもhalFと入力するほうが得意なので、通常使用します。

一方、tarについてtar czvf filenameは、「tar create and Zip、Verbosely For filename」と入力して(頭の中で)と言います。これが、さまざまな文字の意味を学んだ方法だからです。


e2fsck -fvccktを覚えているのは、あまりにも多くのエラーが返される場合に、私がいる可能性のある状況を綴るからです。;)
ジョー

2

他の人が答えたように、それは問題ではありません(特に文書化されていないか、オプション引数がさらに引数をとらない限り)。

しかし、オプションをアルファベット順に並べることは議論の余地があります。

個人的には、ニーモニックは厳密なアルファベット順よりも価値が高いことがわかります。一連のオプションを覚えやすい単語にすると覚えやすくなります。たとえば、次のことを考慮してください。

netstat -tan
# alphabetic is good (by chance) in this case
netstat -ant

対:

netstat -atn
netstat -nta

したがって、コマンドのオプションの特定のコンボを繰り返していることに気付いた場合は、覚えやすい順序に文字を並べ替えることができます。

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