
重複の可能性:
"--"(二重ダッシュ) とはどういう意味ですか?
誰でも次のことを説明できますか?
「-xyz」というファイルがあります。コマンドラインを使用してファイルを削除または移動しようとすると、移動できません。私は次のことを試しました:
[rahul@srv100 ~]# ls -lrt -- "-xyz"
-rw-r--r-- 1 rahul rahul 0 Dec 19 08:06 -xyz
[rahul@srv100 ~]# mv "-xyz" xyz
mv: invalid option -- x
Try `mv --help' for more information.
[rahul@srv100 ~]# mv \-xyz xyz
mv: invalid option -- x
Try `mv --help' for more information.
[rahul@srv100 ~]# mv -\xyz xyz
mv: invalid option -- x
Try `mv --help' for more information.
[rahul@srv100 ~]# mv '-xyz' xyz
mv: invalid option -- x
Try `mv --help' for more information.
最後に、Winscpを使用してファイル名を変更し、いくつかの方法を試した後、オプションを取得して動作します。
mv -- '-xyz' xyz
「--」が役に立つことを願っています。次のファイル/ディレクトリを作成しました。
mkdir -- --abc
touch -- -xyz
だから私の質問はbashの「--」とは何ですか?説明してください。
答え1
他の人がすでに述べたように、--
オプションと引数を区別するために使用されます。プログラムを実行して引数を指定した場合、プログラムは指定された引数をコマンドラインオプションとして解釈する必要があるのか、引数として解釈するのかを区別することはできません。これがオプションのプレフィックス-
/ --
orがWindowsに導入された理由です/
。つまり-rf
、--help
または/?
このような接頭辞または解釈可能な別の特殊名で始まるファイルがある可能性があるため、--
コマンドラインオプションを通常の引数から分離する機能が導入されました。つまり、後続の各引数は--
コマンドラインオプションとして扱われませんが、パラメータとしてのみ使用されます。getopt (1)
は、区切り文字サポートなどのパラメータ解析のための標準ソリューションです。--
これは、それを使用するすべてのプログラムがgetopt
自動的に区切り--
文字をサポートすることを意味します。
特殊文字で始まるファイルを処理する場合は、特殊文字で始まらないので、ファイルの前に追加することも-
できます。したがって、コマンドラインオプションとして解釈されません。たとえば、次のようになります。./
-
mkdir ./--abc
答え2
これは、コマンドオプションが許可されなくなったことをコマンドに通知するために使用されます。
だから
rm ---abc
これはabcで-を無視することを意味します。
詳細については、次を参照してください。 http://tldp.org/LDP/abs/html/special-chars.html
答え3
追加のコマンドライン引数をオプションとして解釈しないように個々のコマンドに指示します。