を使用すると、tar
標準入力テキストを圧縮し、圧縮データを標準出力に表示できますか?例:
$ echo "test" | tar c -
<compressed blob here>
私はmacOSモハービーを使用しています。
答え1
簡単に言えば、stdinの内容全体をファイルや一時ファイル(メモリなど)に保存しないと、これはできません。
これはtarファイル形式自体の制限です。 tarは、ファイルの内容を保存する前に、ファイル名などを含むファイル記述子とファイルを保存するためです。サイズ。したがって、tarはファイルを保存する前にファイルサイズを知る必要があります。 stdinから読み込むと、tarは内容をすべて読まない限り、内容のサイズを知りません。この場合、内容がtarball自体に保存されるようにどこかに保存する必要があります。
また、見ることができます「標準入力から直接.tar.gzファイルを生成できますか?またはすでにgzipで圧縮されたファイルを一緒にパッケージ化する必要があります。」答えの1つは、最初にファイルの内容を保存してから、ファイル記述子を見つけて更新して内容の実際のサイズを書き込む方法をリストします。しかし、このためには出力ファイルを照会できる必要がありますが、stdoutに書き込む場合は通常そうではありません。
つまり、tarballに追加できるように一時ファイルに入力を作成する必要があります。