端末コマンドで「-」は何を意味しますか?


23

--afterコマンドを使用する多くのチュートリアルを見てきました。このようなもの:

command -- 

これは--どういう意味ですか?


どのビデオチュートリアルですか?
TheWanderer

unix.stackexchange.com/q/11376/6949を参照してください。
edwinksl

実際、私はこの質問がAUで既にだまされていなかったことに驚いています。他のStackExchangeコミュニティでの同一の質問は(@edwinkslによって与えられたリンクを介して)duとしてカウントされませんか?それはどうですか?たぶん私は.... META上のことを尋ねるべき
Cbhihe

@Cbhihe私は、他のSEサイトの複製ターゲットを指すことができるメカニズムを知りません。とにかく、それはあまり頻繁に起こらないので、おそらくそれは必要ないでしょう。
edwinksl

3
@ anonymous2なぜ世界でそうするのでしょうか?質問はここにトピックにあるので、とどまることができます。移動すると、AUから情報が削除され、U&Lに新しい情報が追加されないため、なぜそれが良いことなのかわかりません。
テルドン

回答:


46

--コマンドラインオプションの終わりを示すために使用されます。これにより、で始まる引数を使用できます--。たとえば、というファイルを作成する場合--foo

$ > '--foo'
$ ls
--foo

そして、それを削除しようとすると、rmあなたはそれに引数を与えていると思うでしょう:

$ rm --foo 
rm: unrecognized option '--foo'
Try 'rm ./--foo' to remove the file '--foo'.
Try 'rm --help' for more information.

これを回避する1つの方法は、次を使用すること--です。

$ rm -- --foo

これは一般的な方法であり、POSIX推奨されているため、多くのプログラムでサポートされています。


13
Bashではまったく実装されていません。これrmプログラムおよび多くのPOSIX準拠ユーティリティの機能です。ガイドライン10を参照してください。実際にBashが作業を行っていないことを確認するには(それは意味がありません)、単にで小さなスクリプトを作成し、printf '> %s <\n' "$@"で起動し--ます。
gniourf_gniourf

3
@gniourf_gniourf d'oh!オプションを出力する小さなperlスクリプトを作成して確認しました--が、aを渡しても表示されませんが、もちろん、関連するPerlモジュール(getopts)もサポートしているためです。あなたは非常に正しいです、私はすぐに検索しman bash、引用したセクションを見ましたが、それが「コマンドラインオプション」セクションにあることに気づきませんでした。修正いただきありがとうございます、回答を編集しました。
テルドン

1

ほとんどのコマンドは-を使用して、さらにパラメーターを異なる方法で処理する必要があることをコマンドに伝えます。1つの例は、上記のrm---filenameです。別の例として、「startx」のようなスクリプトは、-の前のすべてを解釈し、その後のすべてをXサーバーに渡します。

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