web-dev-qa-db-ja.com

「tar xzf-」でハイフン「-」はどういう意味ですか?

コマンドラインからDropboxをインストールしようとすると、コマンドを読みました

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

-ここで意味ですか?前のディレクトリですか?

23
Calculus

一部のコマンドは、ファイル名の代わりに-を受け入れます。

  • 名前付きファイルではなく 標準出力 に書き込みます。これは、-の実行後にwgetに渡される-O引数です。
  • 名前付きファイルからではなく 標準入力 から読み取る。これは、tarの後にxzfに渡された-引数です。

表示したコマンドは、wgetでアーカイブファイルをダウンロードし、tarで解凍します。これを達成するために、wgetの入力に対するtarの出力は piped|)です。これが、wgetがファイルではなく標準出力に書き込み、tarがファイルではなく標準入力から読み取る理由です。

42
Eliah Kagan

これは、多くのUnixプログラムが「実際にファイルを開くのではなく、stdinから読み取る(またはstdoutに書き込む)」と解釈するファイル名です。

これは、プログラムにストリーミングされる入力から読み取ることを意味します。あなたの場合、それはwgetの出力です。

12
Marcus Müller

tarへの-引数は、ファイルではなくstdinからアーカイブを読み取ることを指定します。 GNU tarマニュアル から:

archive-nameとして-を使用する場合、tarは標準入力からアーカイブを読み取ります(ファイルのリストまたは抽出時)

他のコマンドも同じ動作をし、 POSIX.1-2017標準 で指定されています。

ガイドライン13

オペランドを使用して読み取りまたは書き込み用に開くファイルを表すユーティリティの場合、 '-'オペランドは、標準入力(または、出力ファイルがコンテキストから明らかである場合は標準出力)のみを意味するために使用する必要があります。指定)または-という名前のファイル。

5
Tim