2011-11-08 2 views
60

例:コマンドラインパラメータの " - "(ダッシュ)の魔法は何ですか?

  • ISOイメージを作成し、CDに直接それを燃やします。

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • 前のディレクトリに変更します。

    cd -

  • ポート12345およびそれに送られuntarしたデータに聞いてください。ダッシュの目的とどのように私はそれを使用しないで何

    nc -l -p 12345 | tar xvzf -

答えて

71

tarコマンドの最後に裸の-がある場合は、ファイルを使用する多くのコマンドでよく使用されます。

実際のファイル名ではなく、標準入力または出力を指定することができます。

これは、最初の例と3番目の例です。たとえば、cdrecordコマンドは標準入力(mkisofsで生成されたISOイメージストリーム)をとり、/dev/dvdrwに直接書き込みます。

cdコマンドを使用すると、ディレクトリを変更するたびに、元のディレクトリが保存されます。ディレクトリ名が-cdの場合は、実際のディレクトリではなくその記憶されたディレクトリが使用されます。これを使うと、2つのディレクトリ間を簡単に簡単に切り替えることができます。

他のコマンドは、と異なる特別値として-を処理することがあります。

+0

私のためにクリア、ありがとう。 – chemila

+4

注意gitブランチに '-'を使うこともできます。つまり、' git checkout -'を使って前のブランチに戻ることができます。 – snappieT

+3

tar docsにはサポートされていると説明されていますか?どのコマンドがそれをサポートしているかはどのようにわかりますか? –

4

これは、プログラムの標準入力ストリームを使用することを意味します。

cdの場合は、これは以前の作業ディレクトリに変更があります。

11

これは魔法ではありません。コマンドによっては、-を、stdinからの読み込みやstdoutへの書き込みを希望するユーザとして解釈します。シェルには何も特別なものはありません。

+6

'cd-'の場合を除いて。 'bash(1)'は 'cd $ OLDPWD'を書いたかのように' cd-'を扱います。 – sarnold

+4

@sarnoldしかし、ポイントは同じで、 'cd'はシェル組み込みコマンドで、ダッシュ自体を解釈します。 –

+1

@pst、確かに、魔法はありません(それはすべてのコードです:)しかし、そこには特別な何かがシェルにあります。 – sarnold

5

魔法が慣例です。何千年もの間、人々はオプションを引数と区別するために ' - 'を使い、ファイル名に ' - 'を使用してstdinまたはstdoutを適切に意味してきました。大会の力を過小評価しないでください!

5

-は、それぞれのコマンドが意味するものを正確に意味します。いくつかの共通の慣例がありますが、他の回答ではほとんどの例を見てきましたが、どれも普遍的な100%はありません。

(シェル自体、およびcdechoなどのその組み込みコマンドのいくつかは、従来の方法でそれを使用することを除いて)限りシェルに関しては-文字について魔法何もありません。 \,'、および",などの文字は、表示される場所に応じて特別な意味を持つ「magical」です。これらは "シェルメタキャラクター"です。 -はそうではありません。

特定のコマンドがどのように使用されているかを確認するには、、そのコマンドのドキュメントを参照してください。

関連する問題