2017-07-26 3 views
4

私は学生であり、私のカーソースの一部として、lsコマンドをコード化し、その動作を可能な限り再現する必要があります。マック(エル・キャピタン10.11.6)で'ls'引数の確立順序はありますか?

、ターミナルITERM 2(zshの)を使用して、私が手:

user> ls . -R 
ls: -R: No such file or directory 

とアーチ(最新版)には、デフォルトのテキストインターフェイス(bashの)を使用して、私はget:

私はむしろArchを信頼したいと思いますが、ディレクトリが指定されてからオプションを拒否するのは正しいですか?そして引数の順序を宣言する文書はありますか?

+1

ところで、 'ls'はbashまたはzshの一部ではなく、OSベンダーが提供する外部コマンドです。特定のOSで動作します(MacportsやHomebrewのように、別のバージョンがインストールされている場合、関数、エイリアス、動作を明示的に変更するその他の設定はありません)。 –

+0

私は確信していませんでした、それは私がそれを含む理由です^^私に知らせてくれてありがとう –

答えて

10

は、エントリ#9、POSIX utility syntax guidelinesを参照してください。

指針9:

すべてのオプションは、コマンドラインでオペランドを前に置く必要があります。

-Rはオプションであり、そして.がオペランドであるとしてこのように、POSIXの保証がサポートされる使用方法は、ls -R .です。

GNUツールは、一般的にこのガイドラインを強制しません(アーチがあなたの議論を逆の順序で入れられる理由です)。しかし、移植性を最大限に高めるために、ソフトウェアを書くことが賢明です。

あなたがなりたい場合は特定-Rは、お使いのプラットフォームで、次の2つのカテゴリーを分離するために--を使用することができますどのようなオペランドではなく引数として扱われること:ls -l -- -Rのようにオプションとして-l-Rを扱いますしたがって、ファイルまたはディレクトリ-Rを探し、長い形式のリストを提供します。これは、POSIXユーティリティシンタックスのガイドライン#10で定義されています。

関連する問題