例:
ISOイメージを作成し、CDに直接書き込みます。
mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -
前のディレクトリに移動します。
cd -
ポート12345でリッスンし、送信されたデータを展開します。
nc -l -p 12345 | tar xvzf -
ダッシュの目的は何ですか?また、どのように使用しますか?
tar
コマンドの末尾にある裸の-
を意味する場合、それはファイルを使用したい多くのコマンドで一般的です。
実際のファイル名ではなく、標準の入力または出力を指定できます。
それは、最初と3番目の例の場合です。たとえば、cdrecord
コマンドは標準入力(mkisofs
によって生成されるISOイメージストリーム)を取得し、/dev/dvdrw
に直接書き込みます。
cd
コマンドを使用すると、ディレクトリを変更するたびに、元のディレクトリが保存されます。特別な-
"ディレクトリ名"でcd
を実行すると、実際のディレクトリではなく、その記憶されたディレクトリが使用されます。これを使用することで、2つのディレクトリを非常にすばやく簡単に切り替えることができます。
他のコマンドは、-
を異なる特別な値として扱う場合があります。
それは魔法ではありません。一部のコマンドは、-
を、stdinからの読み取りまたはstdoutへの書き込みを希望するユーザーとして解釈します。シェルにとって特別なことは何もありません。
stdin
またはstdout
との間のリダイレクト。
参照: http://tldp.org/LDP/abs/html/special-chars.html#DASHREF2
魔法はコンベンションにあります。何千年もの間、人々はオプションと引数を区別するために「-」を使用し、必要に応じてファイル名に「-」を使用してstdinまたはstdoutを意味していました。コンベンションの力を過小評価しないでください!
-
は、各コマンドが意味するとおりのものを意味します。いくつかの一般的な慣習があり、それらのほとんどの例を他の回答で見ましたが、100%普遍的なものはありません。
シェルに関する限り、-
文字には魔法はありません(シェル自体と、cd
やecho
などの組み込みコマンドの一部を除き、従来の方法で)。 \
、'
、および"
などの一部の文字は、are "magical"で、表示される場所に特別な意味があります。これらは「シェルメタキャラクター」です。 -
はそうではありません。
特定のコマンドで-
がどのように使用されるかを確認するには、そのコマンドのドキュメントを読んでください。
プログラムの標準入力ストリームを使用することを意味します。
cd
の場合、それは何か異なることを意味します:前の作業ディレクトリに変更します。